Изменения

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

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

712 байт добавлено, 14:03, 12 января 2018
Описание в псевдокоде
=== Описание в псевдокоде ===
<!---Здесь мы воспользуемся вспомогательной константой <tex>\Omega</tex>, которая будет означать худший выбор для всех женщин, очень нежелательного мужчину(и̶з̶в̶р̶а̶щ̶е̶н̶е̶ц̶ ̶т̶у̶п̶о̶й̶). Изначально все женщины помолвлены с <tex>\Omega</tex>. По завершении алгоритма все мужчины будут заняты, поэтому каждая женщина будет замужем не за <tex>\Omega</tex>.--- k ← 0; {все женщины (временно) помолвлены с Ω}while k < n dobegin X ← (k + 1)-ый мужчина;while X 6= Ω dobegin x ← лучшая кандидатура из текущего списка предпочтениймужчины X;if x предпочитает мужчину X своему жениху thenbeginпомолвка X и x;X ← предыдущий жених женщины xend;if X 6= Ω thenвычёркиваем x из текущего списка предпочтений мужчины X;end;k ← k + 1end;--->   
<font color="green">// Изначально все мужчины не женаты и все женщины незамужние.</font>
k = 0 <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 помолвленными, mM' — свободным
'''else'''
w отказывает mM
Время работы алгоритма {{---}} <tex>O(n^2)</tex>, так как количество итераций цикла <tex>\mathrm {while}</tex> не превосходит <tex>O(n^2)</tex>.
693
правки

Навигация