Изменения

Перейти к: навигация, поиск

Задача об устойчивом паросочетании

6064 байта добавлено, 19:05, 4 сентября 2022
м
rollbackEdits.php mass rollback
{{Определение
|definition =
Пара <tex>\langle A, b\rangle</tex> называется '''неустойчивой''' (англ. ''unstable pair''), если:
# В паросочетании есть пары <tex>\langle A, a\rangle</tex> и <tex>\langle B, b\rangle</tex> (<tex>A</tex> женат на <tex>a</tex>, <tex>B</tex> женат на <tex>b</tex>);
# <tex>A</tex> предпочитает <tex>b</tex> элементу <tex>a</tex>;
# <tex>b</tex> предпочитает <tex>A</tex> элементу <tex>B</tex>.
}}
{{Определение
|definition='''Устойчивое паросочетание''' (англ. ''stable matching'') — [[Паросочетания: основные определения, теорема о максимальном паросочетании и дополняющих цепях| паросочетание]] без неустойчивых пар.
}}
{{Задача
|definition=
Найти полное устойчивое паросочетание между элементами двух множеств размера <tex>n</tex>, имеющими свои предпочтения.}}
 
== Основная задача ==
Есть N <tex>n</tex> мужчин и N <tex>n</tex> женщин. Они обладают следующими особенностями:# Каждый человек оценивает лишь людей противоположного пола (все гетеросексуальны);# Каждый мужчина может отсортировать женщин от "''наименее привлекательной" '' к "''наиболее привлекательной"'', причем его предпочтения не меняются(у каждого мужчины своя функция оценки);# Каждая женщина может отсортировать мужчин от "''наименее привлекательного" '' к "''наиболее привлекательному"'', причем её предпочтения не меняются(у каждой женщины своя функция оценки).
Очевидным образом по такому определению строится полный двудольный граф (левая доля - мужчины, правая - женщины), назовем его МЖ.
Рассмотрим некоторое паросочетание в МЖ. Пара Ab называется неустойчивой, если:# В паросочетании есть пары Aa и Bb Очевидным образом по такому определению строится [[Двудольные_графы| полный двудольный граф]] (A женат на aлевая доля — мужчины, B женат на bправая — женщины)# A считает b привлекательней, чем a# b считает A привлекательней, чем B(неформально это означает потенциальную возможность измены)назовем его МЖ.
{{ОпределениеРассмотрим некоторое [[Паросочетания: основные определения, теорема о максимальном паросочетании и дополняющих цепях|definition=Устойчивое паросочетание - паросочетание без неустойчивых пар]]в МЖ.}}
Задача заключается в нахождении полного устойчивого паросочетания по данным спискам предпочтений.== Алгоритм Гейла-Шепли ==
== Агоритм Гейла-Шепли == Решение задачи было описано в <tex>1962 </tex> году математиками Девидом Гейлом (Университета Университет Брауна) и Ллойдом Шепли (Принстонский университет) в статье «Поступление в колледж и стабильность браков» (College admissions and the stability of marriage) в журнале American texematical Mathematical Monthly<ref>https://ru.wikipedia.org/wiki/American_Mathematical_Monthly American Mathematical Monthly 69, 9-14, 1962.</ref>. Набор правил, следование которым всегда приводит к образованию стабильных пар, получил название алгоритма Гейла-Шепли или «алгоритма отложенного согласия» (алгоритм предложи-и-откажи).
=== Интуитивное описание ===
# мужчины Мужчины делают предложение наиболее предпочитаемой женщине;.# каждая Каждая женщина из всех поступивших предложений выбирает наилучшее и отвечает на него «может быть» (помолвка), на все остальные отвечает «нет» (отказ).# мужчиныМужчины, получившие отказ, обращаются к следующей женщине из своего списка предпочтений, мужчины, получившие ответ «может быть», ничего не делают;.# если Если женщине пришло предложение лучше предыдущего, то она прежнему претенденту (которому ранее сказала «может быть») говорит «нет», а новому претенденту говорит «может быть»;.# шаги Шаги <tex>1</tex>-<tex>4 </tex> повторяются, пока у всех мужчин не исчерпается список предложений, в этот момент женщины отвечают «да» на те предложения «может быть», которые у них есть в настоящий момент.
=== Описание в псевдокоде ===
<font color="green">// Изначально все мужчины не женаты и все женщины не женаты (не замужем)незамужние.</font> '''while''' Существует m <- существует свободный мужчина M = некоторый свободный мужчина, не делавший предложения всем женщинам w <- = первая женщина из текущего списка m, которой m еще не делал предложенияM '''if''' w свободна помечаем m M и w помолвленными '''else if''' w предпочитает m M своему "текущему" жениху mM' помечаем m M и w помолвленными, m вычёркиваем w из списка предпочтений M' помечаем M' - свободным '''else''' вычёркиваем w отказывает mиз списка предпочтений M Время работы алгоритма {{---}} <tex>O(n^2)</tex>, так как количество итераций цикла <tex>\mathrm {while}</tex> не превосходит <tex>O(n^2)</tex>, где <tex>n</tex> равно размеру каждого из данных множеств.
=== Доказательство корректности ===
{{Утверждение
|id=observation1
|about=Наблюдение <tex>1</tex>|statement=Мужчины делают предложения женщинам в порядке убывания симпатии.
}}
{{Утверждение
|id=observation2
|about=Наблюдение <tex>2</tex>|statement=Как только женщина была помолвлена, она не может стать непомолвленной, она может только улучшить свой выбор (сказать «может быть» более предпочтительному кандидату).
}}
{{Лемма
|id=lemma1
|about=Лемма <tex>1</tex>
|statement=
Алгоритм завершается после максимум <tex>n^2 </tex> итераций цикла '''<tex>\mathrm{\mathbf{while'''}}</tex>.
|proof=
На каждой итерации мужчина делает предложение очередной женщине. Но всего может быть не более <tex>n^2 </tex> предложений.
}}
{{Лемма
|id=lemma2
|about=Лемма <tex>2</tex>
|statement=
Все мужчины и женщины будут заняты.
|proof=
1. Предположим, что некоторый мужчина, Ян, (<tex>A</tex>) не женат по завершении алгоритма.  2. Тогда и некоторая женщина, Антонина не замужем  3(<tex>a</tex>) незамужняя. По [[#observation2|наблюдению <tex>2</tex>]], Антонине никто <tex>a</tex> не делал получала предложений. Но <tex>A</tex> сделал предложениявсем женщинам, так как он остался не женат. Получаем противоречие. Таким образом, все мужчины заняты.
4Аналогичные рассуждения применяем для женщин. Пусть какая-то женщина незамужняя. Но Ян сделал предложения всем женщинамЗначит, есть мужчина, т.к. он который остался не женат  5. Получаем противоречие 6. Аналогичные утверждения можно повторить и отталкиваясь от тогоНо мы доказали, что не занята некоторая девушка, поэтому предложение доказанопо завершении алгоритма все мужчины заняты. Снова пришли к противоречию.
}}
 
{{Лемма
|id=lemma3
|about=Лемма <tex>3</tex>
|statement=
Нет После завершения алгоритма не будет неустойчивых пар.
|proof=
1. Предположим <tex>\langle A-, b \rangle</tex> (где <tex>A</tex>, <tex>B - </tex> — мужчины; <tex>a</tex>, <tex>b - </tex> — женщины; <tex>A </tex> женат на <tex>a</tex>, <tex>B </tex> женат на <tex>b</tex>) - нестабильная пара в паросочетнаиипаросочетании, найденном алгоритмом Гейла-Шепли  2. Рассмотрим Возможны два случая:  2.1. # <tex>A </tex> не делал предложения предложение <tex> =</tex>. Значит, <tex> A </tex> находит <tex>a </tex> более привлекательной, чем <tex> =</tex>. Но чтобы рассматриваемая пара была неустойчивой, необходимо, чтобы <tex>b</tex> для <tex>A</tex> была более привлекательна, чем <tex>a</tex>. Следовательно, <tex> \langle A-, b - \rangle</tex> — устойчивая пара.  2.2. # <tex>A </tex> делал предложение <tex> =</tex>. Тогда был такой момент, когда <tex> b </tex> отказала <tex>A (сразу или на одной из последующих итераций)  =</tex>, значит, <tex> b </tex> находит <tex>B </tex> более привлекательным, чем <tex> =</tex>. Снова получается, что <tex> \langle A-, b - \rangle</tex> — устойчивая пара.
}}
 
 
=== Ассимптотика алгоритма ===
 
Не представляет проблемы реализовать внутренний цикл while за <tex>O(1)</tex> (с предварительным предпроцессингом не более, чем за <tex>O(n^2)</tex>). Таким образом, итоговая асимптотика составляет O(n^2).
=== Анализ полученного алгоритмом паросочетания ===
Агоритм Алгоритм Гейла-Шепли гарантирует, что будет найдено некоторое решение задачи. Но решений может быть более одного. Зададимся вопросом, какими свойствами обладает решение, найденное алгоритмом.
{{Лемма
|id=lemma4
|about=Лемма 4 (man-optimality)
|statement=
Из всех возможных решений алгоритмом Гейла-Шепли будет найдено решение, наилучшее для мужчин (каждый мужчина получает в жены женщину, наилучшую из всех возможных при условии корректности решения).
|proof=
Докажем от противного, что для каждого мужчины не существует устойчивого паросочетания, в котором его супругой была бы более желанная для него женщина.
 
Предположим, для мужчины <tex>A</tex> это свойство не выполняется. Так как он оказался женат не на лучшей из кандидатур, то существует женщина <tex>a</tex>, которая предпочла ему другого, более привлекательного мужчину <tex>B</tex>, при этом женщина <tex>a</tex> для мужчины <tex>B</tex> стоит на первом месте в его текущем списке. Предположим, существует устойчивое паросочетание, содержащее <tex>\langle A, a\rangle</tex>. По определению, в устойчивом паросочетании нет неустойчивых пар. Пара <tex>\langle B, a\rangle</tex> станет неустойчивой, если <tex>B</tex> будет предпочитать <tex>a</tex> своей супруге. Значит, <tex>B</tex> женат на ком-то, кто лучше, чем <tex>a</tex>. Но такое невозможно, так как <tex>a</tex> стоит для него на первом месте. Таким образом, если женщина <tex>a</tex> вычёркивается из списка предпочтений мужчины <tex>A</tex>, то любое паросочетание, содержащее <tex>\langle A, a\rangle</tex>, неустойчиво.
 
}}
{{Лемма
|id=lemma5
|about=Лемма 5 (woman-pessimality)
|statement=
Из всех возможных решений алгоритмом Гейла-Шепли будет найдено решение, наихудшее для женщин.
|proof=
Пусть <tex>A</tex>, <tex>B</tex> — мужчины; <tex>c</tex>, <tex>d</tex> — женщины; <tex>A</tex> женат на <tex>d</tex>, <tex>B</tex> женат на <tex>c</tex>.
 
Предположим, <tex>\langle A, c\rangle</tex> — стабильная пара в паросочетании <tex>S'</tex>, найденном алгоритмом Гейла-Шепли, но <tex>A</tex> не самый худший выбор для <tex>c</tex>. Тогда существует стабильная пара в паросочетании <tex>S</tex>, в которой <tex>c</tex> замужем за <tex>B</tex>, который менее привлекателен, чем <tex>A</tex>. Тогда пусть мужем <tex>d</tex> будет <tex>A</tex> в паросочетании <tex>S</tex>. Получается <tex>A</tex> считает <tex>c</tex> более привлекательной, чем <tex>d</tex>. Соответственно <tex>\langle A, c\rangle</tex> {{---}} нестабильная пара в паросочетании <tex>S</tex>. То есть для <tex>c</tex> есть мужчина, который более привлекателен, чем её муж.
 
}}
 
Эти две леммы оставим без доказательства, интересющиеся могут обратится к документу http://www.cs.princeton.edu/courses/archive/spring05/cos423/lectures/01stable-matching.pdf (с.5)
== Обобщения задачи ==
Интересно, что данная задача не всегда имеет решение, если допустить однополые пары (устойчивого паросочетания может не быть)<ref>https://ru. (смwikipedia. org/wiki/Задача_о_соседях_по_комнате Задача о соседях по комнате)</ref>.
Случай же, когда у нас есть <tex>N</tex> мужчин и <tex>M</tex> женщин (<tex>N \neq M</tex>) легко сводится к описанной выше задаче. Рассмотрим <tex>M > N</tex> (<tex>M < N</tex> аналогично). Добавим <tex>M - N</tex> фиктивных мужчин, которые являются наименее привлекательными с точки зрения каждой из женщин. Тогда если в найденном алгоритмом Гейла-Шепли паросочетании некоторая женщина будет замужем за таким фиктивным мужчиной, то это будет де-факто означать, что она на самом деле осталась не замужембез пары.
Также интересна задача о выборе учебного заведения: вместо множества мужчин введем множество университетов, а вместо множества женщин - множество кандидатов, подающих заявления на поступление. Причем в каждом университете есть квота на количество студентов, которое университет может принять. Задача очевидна очевидно сводится к основной добавлением <tex>(K-1)</tex> "филиалов" для каждого университета (<tex>K</tex> - квота). И добавлением фиктивного увниерситета университета (поступление в который означает, что кандидату придется попробовать поступить через год).
== Применения в реальной жизни ==
* Распределение донорских органов по нуждающимся в них людям
Решение данной задачи было отмечено при вручении Нобелевской премии по экономике в <tex>2012 </tex> году за «теорию стабильного распределения и практическое применение рыночных моделей». Её получили один из создателей алгоритма, Ллойд Шепли, а также Элвин Рот, во многом развивший исследования Ллойда Шепли и Дэвида Гейла. Сам Гейл не был удостоен премии, вероятно, лишь в силу того, что умер в <tex>2008 </tex> году. == Примечания ==<references/> == См. также ==* [[Паросочетания: основные определения, теорема о максимальном паросочетании и дополняющих цепях|Паросочетания]]== Источники информации == * [http://www.cs.princeton.edu/courses/archive/spring05/cos423/lectures/01stable-matching.pdf Stable matching, Prinston lecture's presentation]* [http://en.wikipedia.org/wiki/Stable_marriage_problem Stable marriage problem]* [http://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B4%D0%B0%D1%87%D0%B0_%D0%BE_%D0%BC%D0%B0%D1%80%D1%8C%D1%8F%D0%B6%D0%B5 Задача о марьяже]* [http://ge.tt/api/1/files/4LU3zaD1/0/blob?download Устойчивость супружеских пар и другие комбинаторные задачи (Статья Дональда Кнута)]* [http://kek.ksu.ru/eos/Lerner/KnuthRu.pdf Устойчивость супружеских пар и другие комбинаторные задачи - Казанский государственный университет]  [[Категория: Алгоритмы и структуры данных]][[Категория: Задача о паросочетании]]
1632
правки

Навигация