1、stable marriage問題
問題大概是這樣:有一個社團裏有n個女生和n個男生,每位女生按照她的偏愛程度將男生排序,同時每位男生也按照自己的偏愛程度將女生排序。然後將這n個女生和n個男生配成完備婚姻。
如果存在兩位女生A和B,兩位男生a和b,使得A和a結婚,B和b結婚,但是A更偏愛b而不是a,b更偏愛A而不是B,則這個婚姻就是不穩定的,A和b可能揹着別人相伴而走,因爲他倆都認爲,與當前配偶比起來他們更偏愛各自的新伴侶。
如果完備婚姻不是不穩定的,則稱其是穩定的。通過證明,可以得到每一個n女n男的社團,都存在穩定婚姻的結論。但是這種情況只在異性的社團中存在。也就是說在同性的社團裏面,穩定婚姻的存在性將不再被保證。
Gale-Shapley 算法
while 存在男人m是自由的且還沒對每個女人都求過婚
選擇這個男人m
令w是m的優先表中還沒求過婚的最高排名的女人
if w是自由的
(m,w)變成約會狀態
else w當前與m1約會
if w更偏愛m1而不愛m
m保持自由
else w更偏愛m而不愛m1
(m,w)變成約會狀態
m1變成自由
endif
endif
endwhile