穩定婚姻算法 - Gale-Shapley算法
問題描述:n個男人和n個女人相互配對。每個男人m對所有的女人排名,如果m給w的排名高於w’,就說m偏愛w超過w’。把m的按順序的排名作爲他的優先表。類似的,每個女人也對所有的男人排名。求出穩定匹配(給定一個完美匹配S,如果在S中存在兩個對(m,w),(m’,w’),其中m更愛w’,且w’更愛m,那麼配對(m,w’)就是一個不穩定的因素,他們將會私奔。。。)
function stableMatching {
Initialize all m ∈ M and w ∈ W to free
while ∃ free man m who still has a woman w to propose to {
w = first woman on m’s list to whom m has not yet proposed
if w is free
(m, w) become engaged
else some pair (m', w) already exists
if w prefers m to m'
m' becomes free
(m, w) become engaged
else
(m', w) remain engaged
}
}
顯然本算法帶有不公平性,能夠保證男性得到最滿意的,但女性最糟糕。如果改爲女性向男性求婚,則相反。
- O(
n2 )
所以男性一定能選到對於他來說結果最好的stable的match