4501
правка
Irina (обсуждение | вклад) |
Irina (обсуждение | вклад) |
||
(не показано 11 промежуточных версий этого же участника) | |||
Строка 3: | Строка 3: | ||
== Постановка задачи == | == Постановка задачи == | ||
Экземпляр <math>I</math> задачи о больницах и резидентах (HR) [5, 6, 14] включает множество <math>R = \{ r_1, ..., r_n \}</math> ''резидентов'' и множество <math>H = \{ h_1, ..., h_m \} </math> ''больниц''. Каждая больница <math>h_j \in H</math> имеет ''кадровый потенциал'' в виде целого положительного числа, обозначаемый <math>c_j</math>. Также каждый резидент <math>r_i \in R</math> имеет ''список предпочтений'', в котором он ранжирует подмножество H в строгом порядке. Пара <math>(r_i, h_j) \in R \times H</math> называется ''приемлемой'', если <math>h_j</math> содержится в списке предпочтений <math>r_i</math>; в этом случае говорят, что <math>r_i</math> считает <math>h_j</math> приемлемой. Аналогично, каждая больница <math>h_j \in H</math> имеет список предпочтений, в котором она располагает в строгом порядке тех резидентов, которые считают эту больницу приемлемой. Пусть имеются три любых агента <math>x, y, z \in R \cup H</math>; | Экземпляр <math>I</math> задачи о больницах и резидентах (HR) [5, 6, 14] включает множество <math>R = \{ r_1, ..., r_n \}</math> ''резидентов'' и множество <math>H = \{ h_1, ..., h_m \} </math> ''больниц''. Каждая больница <math>h_j \in H</math> имеет ''кадровый потенциал'' в виде целого положительного числа, обозначаемый <math>c_j</math>. Также каждый резидент <math>r_i \in R</math> имеет ''список предпочтений'', в котором он ранжирует подмножество H в строгом порядке. Пара <math>(r_i, h_j) \in R \times H</math> называется ''приемлемой'', если <math>h_j</math> содержится в списке предпочтений <math>r_i</math>; в этом случае говорят, что <math>r_i</math> считает <math>h_j</math> приемлемой. Аналогично, каждая больница <math>h_j \in H</math> имеет список предпочтений, в котором она располагает в строгом порядке тех резидентов, которые считают эту больницу приемлемой. Пусть имеются три любых агента <math>x, y, z \in R \cup H</math>; утверждается, что <math>x</math> ''предпочитает'' агента <math>y</math> агенту <math>z</math>, если <math>x</math> находит приемлемым их обоих и <math>y</math> предшествует <math>z</math> в списке предпочтений <math>x</math>. Пусть <math>C = \sum_{h_j \in H} c_j</math>. | ||
Обозначим за A множество | Обозначим за A множество приемлемых пар в <math>I</math> и положим L = |A|. ''Назначение'' M является подмножеством A. Если <math>(r_i, h_j) \in M</math>, то говорят, что резидент <math>r_i</math> ''назначен'' больнице <math>h_j</math>, а больница <math>h_j</math> – резиденту <math>r_i</math>. Для каждого элемента <math>q \in R \cup H</math> множество назначенных q в M обозначается M(q). Если <math>r_i \in R</math> и <math>M(r_i) = \empty</math>, то считается, что <math>r_i</math> ''не назначен'', в противном случае <math>r_i</math> назначен. Аналогично, любая больница <math>h_j \in H</math> является ''недоукомплектованной'', ''полной'' или ''переукомплектованной'', если <math>|M(h_j)|</math> меньше, равна или больше <math>c_j</math>, соответственно. | ||
''Паросочетанием'' M называется назначение, такое, что <math>|M(r_i)| \le 1</math> для каждого <math>r_i \in R</math> и <math>|M(h_j)| \le c_j</math> для каждого <math>h_j \in H</math> (т. е. ни один резидент не назначен в | ''Паросочетанием'' M называется назначение, такое, что <math>|M(r_i)| \le 1</math> для каждого <math>r_i \in R</math> и <math>|M(h_j)| \le c_j</math> для каждого <math>h_j \in H</math> (т. е. ни один резидент не назначен в неприемлемую больницу, каждый резидент назначен не более чем в одну больницу и ни одна больница не переукомплектована). Для удобства обозначений, если даны паросочетание M и резидент <math>r_i \in R</math>, такой, что <math>M(r_i) \ne \empty</math>, то в случаях, когда это не вызывает двусмысленности, обозначение <math>M(r_i)</math> также используется для обозначения единственного члена <math>M(r_i)</math>. | ||
Строка 22: | Строка 22: | ||
==Основные результаты== | ==Основные результаты== | ||
Впервые задача HR была определена Гэйлом и Шепли [5] под названием «Задача о поступлении в колледж». В своей основополагающей статье авторы рассматривают классическую задачу о стабильных браках (SM; см. [[Стабильный брак]] и [[Оптимальный стабильный брак]]), | Впервые задача 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 допускает по крайней мере одно устойчивое паросочетание. Доказательство этого результата носит конструктивный характер, то есть описывается алгоритм нахождения устойчивого паросочетания в <math>I</math>. Этот алгоритм получил название ''алгоритма Гэйла-Шепли'' [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 \ | <math>M := M \setminus \{ (r_k, h_j) \} </math>; | ||
} | } | ||
'''if''' (<math>h_j</math> полна) { | '''if''' (<math>h_j</math> полна) { | ||
Строка 37: | Строка 37: | ||
'''for''' (каждого преемника <math>r_l</math> резидента <math>r_k</math> в списке <math>h_j</math>) | '''for''' (каждого преемника <math>r_l</math> резидента <math>r_k</math> в списке <math>h_j</math>) | ||
удалить пару <math>(r_l, h_j)</math> | удалить пару <math>(r_l, h_j)</math> | ||
} | |||
} | |||
Рисунок 1. Алгоритм Гэйла-Шепли для задачи HR | Рисунок 1. Алгоритм Гэйла-Шепли для задачи HR | ||
Расширенная версия алгоритма Гэйла | Расширенная версия алгоритма Гэйла-Шепли для задачи 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> сохраняются некоторые ключевые структурные свойства, касающиеся неназначенных резидентов и недоукомплектованных больниц. | ||
Строка 63: | Строка 68: | ||
Эти результаты известны под общим названием «Теорема о сельских больницах» (подробнее см. в [6, раздел 1.6.4]. Кроме того, множество устойчивых паросочетаний в <math>I</math> образует дистрибутивную решетку | Эти результаты известны под общим названием «Теорема о сельских больницах» (подробнее см. в [6, раздел 1.6.4]). Кроме того, множество устойчивых паросочетаний в <math>I</math> образует дистрибутивную решетку с естественным отношением доминирования [6, раздел 1.6.5]. | ||
==Применение== | ==Применение== | ||
Практические приложения задачи HR широко распространены. В первую очередь они возникают в контексте централизованных автоматизированных схем подбора кандидатов на должности (например, студентов-медиков в больницы, выпускников школ в университеты, учеников начальных школ в средние школы). Возможно, самым известным примером такой схемы является Национальная программа подбора резидентов (National Resident Matching Program, NRMP) в США [16], которая ежегодно распределяет около 31 000 | Практические приложения задачи HR широко распространены. В первую очередь они возникают в контексте централизованных автоматизированных схем подбора кандидатов на должности (например, студентов-медиков в больницы, выпускников школ – в университеты, учеников начальных школ – в средние школы). Возможно, самым известным примером такой схемы является Национальная программа подбора резидентов (National Resident Matching Program, NRMP) в США [16], которая ежегодно распределяет около 31 000 выпускников медицинских университетов (называемых резидентами) на их первые должности в больницах, учитывая предпочтения резидентов по отношению к больницам и наоборот, а также кадровый потенциал больниц. Аналоги программы NRMP существуют и в других странах, включая Канаду [17], Шотландию [18] и Японию [19]. Эти схемы подбора в основном используют расширения алгоритма RGS для задачи HR. | ||
Строка 72: | Строка 77: | ||
==Расширения задачи HR == | ==Расширения задачи HR == | ||
Одно из ключевых расширений HR, имеющее большое практическое значение, возникает в том случае, когда экземпляр задачи может включать в себя набор пар, каждая из которых представляет совместный список предпочтений по парам больниц (например, для того, чтобы члены данной пары могли быть расположены географически близко друг к другу). Расширение HR, в котором могут участвовать пары, обозначается HRC; определение стабильности в HRC является естественным расширением определения стабильности в HR (формальное определение HRC см. в [6, раздел 1.6.6]). Известно, что экземпляр задачи HRC не обязательно может выдавать устойчивое паросочетание (см. [6, раздел 1.6.6] и [14, раздел 5.4.3]). Более того, | Одно из ключевых расширений HR, имеющее большое практическое значение, возникает в том случае, когда экземпляр задачи может включать в себя набор пар, каждая из которых представляет совместный список предпочтений по парам больниц (например, для того, чтобы члены данной пары могли быть расположены географически близко друг к другу). Расширение HR, в котором могут участвовать пары, обозначается HRC; определение стабильности в HRC является естественным расширением определения стабильности в HR (формальное определение HRC см. в [6, раздел 1.6.6]). Известно, что экземпляр задачи HRC не обязательно может выдавать устойчивое паросочетание (см. [6, раздел 1.6.6] и [14, раздел 5.4.3]). Более того, задача решения вопроса о том, допускает ли экземпляр HRC устойчивое паросочетание, является NP-полной [13]. | ||
HR можно рассматривать как обобщение задачи SM вида «от многих к одному». Дальнейшим обобщением SM является задача нахождения устойчивого паросочетания в модели «от многих к многим», в которой резиденты и больницы могут получать множественные назначения с учетом ограничений на кадровый потенциал. В этом случае резиденты и больницы чаще всего называются работниками и фирмами соответственно. Существуют две основные вариации задачи нахождения устойчивого паросочетания «от многих к многим», в которых либо (1) работники ранжируют приемлемые фирмы в порядке предпочтения и наоборот, либо (2) работники ранжируют приемлемые ''подмножества'' фирм в порядке предпочтения и наоборот. Предыдущие работы, относящиеся к обеим моделям, рассмотрены в [4]. | HR можно рассматривать как обобщение задачи SM вида «от многих к одному». Дальнейшим обобщением SM является задача нахождения устойчивого паросочетания в модели «от многих к многим», в которой резиденты и больницы могут получать множественные назначения с учетом ограничений на кадровый потенциал. В этом случае резиденты и больницы чаще всего называются работниками и фирмами, соответственно. Существуют две основные вариации задачи нахождения устойчивого паросочетания «от многих к многим», в которых либо (1) работники ранжируют приемлемые фирмы в порядке предпочтения и наоборот, либо (2) работники ранжируют приемлемые ''подмножества'' фирм в порядке предпочтения и наоборот. Предыдущие работы, относящиеся к обеим моделям, рассмотрены в [4]. | ||
Другие варианты задачи HR возникают в случаях, если списки предпочтений включают связи. Это расширение также очень важно с практической точки зрения, поскольку может быть нереалистично ожидать, что популярная больница расположит большое количество претендентов в строгом порядке, особенно если она не учитывает группы претендентов. Расширение задачи HR, в котором списки предпочтений могут включать связи, обозначается HRT. В этом контексте возникают три естественных определения устойчивости, так называемые слабая устойчивость, сильная устойчивость и сверхустойчивость (формальные определения этих понятий см. в [8]). Известно, что слабоустойчивые паросочетания в экземпляре <math>I</math> задачи HRT могут иметь различные размеры, и | Другие варианты задачи HR возникают в случаях, если списки предпочтений включают связи. Это расширение также очень важно с практической точки зрения, поскольку может быть нереалистично ожидать, что популярная больница расположит большое количество претендентов в строгом порядке, особенно если она не учитывает группы претендентов. Расширение задачи HR, в котором списки предпочтений могут включать связи, обозначается HRT. В этом контексте возникают три естественных определения устойчивости, так называемые ''слабая устойчивость'', ''сильная устойчивость'' и ''сверхустойчивость'' (формальные определения этих понятий см. в [8]). Известно, что слабоустойчивые паросочетания в экземпляре <math>I</math> задачи HRT могут иметь различные размеры, и задача нахождения слабоустойчивого паросочетания максимальной мощности является NP-сложной (подробнее об этом см. [[Задача о стабильных браках со связями и неполными списками]]). С другой стороны, в отличие от случая слабой устойчивости, сверхустойчивое паросочетание не обязательно должно существовать в экземпляре <math>I</math>, хотя предложен алгоритм с временем выполнения O(L) для поиска такого паросочетания в случае его существования. Аналогичные результаты имеют место и в случае сильной устойчивости – в этом случае алгоритм с временем выполнения <math>O(L^2)</math> [8] был улучшен алгоритмом с временем выполнения O(CL) [10] и распространен на случай «от многих к многим» [11]. Кроме того, аналоги теоремы о сельских больницах справедливы для HRT при каждом из критериев сверхустойчивости и сильной устойчивости [7, 15]. | ||
Строка 84: | Строка 89: | ||
==Открытые вопросы== | ==Открытые вопросы== | ||
Было сформулировано несколько | Было сформулировано несколько аппроксимационных алгоритмов поиска слабоустойчивого паросочетания максимальной мощности для экземпляра HRT, в котором каждая больница имеет кадровый потенциал 1 (подробнее об этом см. [[Задача о стабильных браках со связями и неполными списками]]). Остается открытым вопрос о расширении этих алгоритмов или о формулировании эффективных эвристик для случая HRT с произвольными значениями кадрового потенциала. Эта задача особенно актуальна с практической точки зрения, поскольку, как уже отмечалось в разделе «Применение», больницы могут захотеть включить связи в свои списки предпочтений. В этом случае слабая устойчивость является наиболее часто используемым критерием устойчивости, поскольку существование такого паросочетания гарантируется. Попытка обеспечить совпадение для как можно большего числа резидентов мотивирует на поиск больших слабоустойчивых паросочетаний. | ||
==Ссылка на код== | ==Ссылка на код== | ||
Строка 90: | Строка 95: | ||
==См. также== | ==См. также== | ||
*[[ | *[[Оптимальный стабильный брак]] | ||
*[[Ранжированное паросочетание]] | *[[Ранжированное паросочетание]] | ||
*[[ | *[[Задача о стабильных браках ]] | ||
*[[ | *[[Задача о стабильных браках и дискретный выпуклый анализ]] | ||
*[[ | *[[Задача о стабильных браках со связями и неполными списками]] | ||
*[[Задача об устойчивом разбиении]] | *[[Задача об устойчивом разбиении]] | ||
правка