Задача о больницах и резидентах: различия между версиями

Перейти к навигации Перейти к поиску
м
Метка: visualeditor-switched
Строка 22: Строка 22:


==Основные результаты==
==Основные результаты==
Впервые задача HR была определена Гэйлом и Шепли [5] под названием «Задача о поступлении в колледж». В своей основополагающей статье авторы рассматривают классическую задачу о стабильных браках (SM; см. [[Стабильный брак]] и [[Оптимальный стабильный брак]]), которая является частным случаем HR, в котором <math>n = m, A = R \times H</math>, и <math>c_j = 1</math> для всех <math>h_j \in H</math>; в этом частном случае вместо резидентов и больниц мы имеем дело с мужчинами и женщинами, соответственно. Гэйл и Шепли показали, что каждый экземпляр <math>I</math> задачи HR допускает по крайней мере одно устойчивое паросочетание. Доказательство этого результата носит конструктивный характер, то есть описывается алгоритм нахождения устойчивого паросочетания в I. Этот алгоритм получил название ''алгоритма Гэйла-Шепли'' [https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%93%D1%8D%D0%B9%D0%BB%D0%B0_%E2%80%94_%D0%A8%D0%B5%D0%BF%D0%BB%D0%B8].
Впервые задача HR была определена Гэйлом и Шепли [5] под названием «Задача о поступлении в колледж». В своей основополагающей статье авторы рассматривают классическую задачу о стабильных браках (SM; см. [[Стабильный брак]] и [[Оптимальный стабильный брак]]), представляющую собой частный случай HR, в котором <math>n = m, A = R \times H</math> и <math>c_j = 1</math> для всех <math>h_j \in H</math>; в этом частном случае вместо резидентов и больниц мы имеем дело с мужчинами и женщинами, соответственно. Гэйл и Шепли показали, что каждый экземпляр <math>I</math> задачи HR допускает по крайней мере одно устойчивое паросочетание. Доказательство этого результата носит конструктивный характер, то есть описывается алгоритм нахождения устойчивого паросочетания в I. Этот алгоритм получил название ''алгоритма Гэйла-Шепли'' [https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%93%D1%8D%D0%B9%D0%BB%D0%B0_%E2%80%94_%D0%A8%D0%B5%D0%BF%D0%BB%D0%B8].


   <math>M := \empty</math>
   <math>M := \empty</math>
Строка 31: Строка 31:
     '''if''' (<math>h_j</math> переукомплектована) {
     '''if''' (<math>h_j</math> переукомплектована) {
       <math>r_k</math> := худший резидент в <math>M(h_j)</math> согласно списку <math>h_j</math>;
       <math>r_k</math> := худший резидент в <math>M(h_j)</math> согласно списку <math>h_j</math>;
       <math>M := M \sub \{ (r_k, h_j) \} </math>;  
       <math>M := M \setminus \{ (r_k, h_j) \} </math>;  
     }  
     }  
     '''if''' (<math>h_j</math> полна) {
     '''if''' (<math>h_j</math> полна) {
Строка 44: Строка 44:




Расширенная версия алгоритма Гэйла/Шепли для задачи HR показана на рис. 1. Алгоритм включает в себя последовательность операций ''apply (подать заявку)'' и ''delete (удалить)''. На каждой итерации цикла '''while''' некоторый не назначенный резидент <math>r_i</math> с непустым списком предпочтений подает заявку в первую больницу <math>h_j</math> в его списке и становится временно назначенным в <math>h_j</math> (впоследствии это назначение может быть отменено). Если в результате этого назначения больница <math>h_j</math> становится переукомплектованной, то она отказывается от худшего из назначенных резидентов <math>r_k</math>. Далее, если больница <math>h_j</math> полна (независимо от того, была ли она переукомплектована ранее на той же итерации цикла), то для каждого резидента <math>r_l</math>, которого <math>h_j</math> считает менее желательным, чем его худший резидент <math>r_k</math>, алгоритм ''удаляет пару'' <math>(r_l, h_j)</math>, что включает удаление <math>h_j</math> из списка предпочтений <math>r_l</math> и наоборот.
Расширенная версия алгоритма Гэйла-Шепли для задачи HR показана на рис. 1. Алгоритм включает в себя последовательность операций ''apply (подать заявку)'' и ''delete (удалить)''. На каждой итерации цикла '''while''' некоторый неназначенный резидент <math>r_i</math> с непустым списком предпочтений подает заявку в первую больницу <math>h_j</math> в его списке и становится временно назначенным в <math>h_j</math> (впоследствии это назначение может быть отменено). Если в результате этого назначения больница <math>h_j</math> становится переукомплектованной, то она отказывается от худшего из назначенных резидентов <math>r_k</math>. Далее, если больница <math>h_j</math> полна (независимо от того, была ли она переукомплектована ранее на той же итерации цикла), то для каждого резидента <math>r_l</math>, которого <math>h_j</math> считает менее желательным, чем его худший резидент <math>r_k</math>, алгоритм ''удаляет пару'' <math>(r_l, h_j)</math>, что включает удаление <math>h_j</math> из списка предпочтений <math>r_l</math> и наоборот.




Поскольку вышеописанный алгоритм предполагает подачу резидентами заявок в больницы, он стал известен как ''алгоритм Гэйла-Шепли, ориентированный на резидентов'', или алгоритм RGS [6, раздел 1.6.3]. Алгоритм RGS завершается нахождением устойчивого паросочетания для заданного экземпляра задачи HR [5, 6, теорема 1.6.2]. При подходящем выборе структур данных (расширяя те, что были описаны в работе [6, раздел алгоритм RGS может быть реализован за время O(L). Он позволяет получить устойчивое паросочетание, которое одновременно является наилучшим для всех резидентов [5,6, теорема 1.6.2]. Эти наблюдения можно обобщить следующим образом.
Поскольку вышеописанный алгоритм предполагает подачу резидентами заявок в больницы, он стал известен как ''алгоритм Гэйла-Шепли, ориентированный на резидентов'', или алгоритм RGS [6, раздел 1.6.3]. Алгоритм RGS завершается нахождением устойчивого паросочетания для заданного экземпляра задачи HR [5, 6, теорема 1.6.2]. При подходящем выборе структур данных (расширяя те, что были описаны в работе [6, раздел 1.2.3]), алгоритм RGS может быть реализован за время O(L). Он позволяет получить устойчивое паросочетание, которое одновременно является наилучшим для всех резидентов [5, 6, теорема 1.6.2]. Эти наблюдения можно обобщить следующим образом.




'''Теорема 1. Для заданного экземпляра задачи HR алгоритм RGS за время O(L) строит уникальное устойчивое паросочетание, в котором каждый назначенный резидент получает лучшую больницу, которую он мог бы получить в любом устойчивом паросочетании, в то время как каждый не назначенный резидент не назначен в каждом устойчивом паросочетании.'''
'''Теорема 1. Для заданного экземпляра задачи HR алгоритм RGS за время O(L) строит уникальное устойчивое паросочетание, в котором каждый назначенный резидент получает лучшую больницу, которую он мог бы получить в любом устойчивом паросочетании, в то время как каждый неназначенный резидент не назначен в каждом устойчивом паросочетании.'''




Аналог алгоритма RGS, носящий название ''ориентированного на больницы алгоритма Гэйла-Шепли'', или сокращенно HGS-алгоритм [6, раздел 1.6.2], позволяет получить единственное устойчивое паросочетание, которое аналогичным образом удовлетворяет свойству оптимальности для больниц [6, теорема 1.6.1].
Аналог алгоритма RGS, носящий название ''ориентированного на больницы алгоритма Гэйла-Шепли'', или сокращенно HGS-алгоритм [6, раздел 1.6.2], позволяет получить единственное устойчивое паросочетание, которое аналогичным образом удовлетворяет свойству оптимальности для больниц [6, теорема 1.6.1].
Хотя для заданного экземпляра <math>I</math> задачи HR может существовать несколько устойчивых паросочетаний, для всех устойчивых паросочетаний в <math>I</math> сохраняются некоторые ключевые структурные свойства, касающиеся неназначенных резидентов и недоукомплектованных больниц.
Хотя для заданного экземпляра <math>I</math> задачи HR может существовать несколько устойчивых паросочетаний, для всех устойчивых паросочетаний в <math>I</math> сохраняются некоторые ключевые структурные свойства, касающиеся неназначенных резидентов и недоукомплектованных больниц.


4501

правка

Навигация