匹配问题
匹配問題
- 匹配問題中的重要概念
- GS算法
- GS算法的幾個(gè)特性
匹配問題中的重要概念
GS算法
為了使得這種雙方都有需求的匹配,最終形成一個(gè)完美的、穩(wěn)定的匹配,Gale和Shapely兩位科學(xué)家提出了GS算法(以他們名字首字母命名)。該算法的偽代碼如下:
while(集合M中存在一個(gè)單身男子m并且該男子沒有向所有女性求婚過)m向他沒有求婚過的最心儀的女子w求婚;if(w處于單身狀態(tài))組成匹配(m,w);else if(w處于匹配狀態(tài)){if(相比w的現(xiàn)任m1,w更加心儀m)w拋棄m1,和m組成匹配(m,w)else w拒絕了m的求婚,m仍然單身。} }GS算法的while循環(huán),最多執(zhí)行n2n^2n2次,即每個(gè)m都想對心儀的女性從高到低依次求婚。進(jìn)行GS算法時(shí),一個(gè)較好的數(shù)據(jù)結(jié)構(gòu)是采用兩種不同的矩陣。矩陣的第i行是一個(gè)數(shù)組,數(shù)組依次從低到高羅列了男子心儀的女生編號(hào)。如下組織形式依次列出了0、1、2三位男子最心儀的三位女生,依次心儀程度依次從高到低排列。例如:
| 0 | Marry | Penny | Moon |
| 1 | Marry | Moon | Penny |
| 2 | Penny | Moon | Penny |
女生則是通過索引可以直接查找對男子的評(píng)分,方便比較求婚的男子是否比當(dāng)前匹配的男子更令她心儀。
| Marry | 10分 | 7分 | 5分 |
| Penny | 4分 | 5分 | 10分 |
| Moon | 8分 | 7分 | 6分 |
按照這種數(shù)據(jù)結(jié)構(gòu)組織形式,GS算法的復(fù)雜度為O(n2)O(n^2)O(n2);
GS算法的幾個(gè)特性
如果算法執(zhí)行中,某個(gè)男子是單身,那么一定存在一個(gè)他還未求過婚的女子。(n對男女,某男單身,一定存在某女單身)
GS算法執(zhí)行結(jié)束時(shí)得到的匹配集合S一定是一個(gè)完美匹配。(GS執(zhí)行結(jié)束條件是不存在單身男子)
GS算法執(zhí)行結(jié)束得到的S是一個(gè)穩(wěn)定匹配。(反證法證明)
GS算法執(zhí)行結(jié)束后,每個(gè)男子都與其最佳伴侶匹配到一起,即形成集合S?S^*S? = {(m,best(m))∣m∈M(m,best(m)) |m \in M(m,best(m))∣m∈M }
- 假設(shè)GS算法執(zhí)行中,首次出現(xiàn)了一個(gè)悲催男子mim_imi?,居然被自己的最佳伴侶wiw_iwi?給拒絕了。而這說明mim_imi?向wiw_iwi?求婚時(shí)wiw_iwi?更加喜歡與wiw_iwi?當(dāng)前的約會(huì)對象mjm_jmj?,或者是原本wiw_iwi?與mim_imi?匹配,但mjm_jmj?向wiw_iwi?求婚時(shí),wiw_iwi?果斷拋棄了mim_imi?而選擇了mjm_jmj?。
- 假設(shè)存在另外一個(gè)穩(wěn)定匹配S1S_1S1?,在這里面mim_imi?和wiw_iwi?匹配到一起,mjm_jmj?和wjw_jwj?匹配到一起。上述GS算法運(yùn)行結(jié)束后mjm_jmj?選擇和wiw_iwi?匹配到一起,而沒有選擇wjw_jwj?,GS算法中男人每次都會(huì)選擇當(dāng)前沒有求過婚的優(yōu)先級(jí)最高的女性求婚,這說明mjm_jmj?喜歡wiw_iwi?多過喜歡wjw_jwj?。
- 上面的論述得到兩個(gè)結(jié)論.(1)wiw_iwi?喜歡mjm_jmj?多過喜歡mim_imi?。(2) mjm_jmj?喜歡wiw_iwi?多過喜歡wjw_jwj?。但是(mi,wim_i,w_imi?,wi?)和(mj,wjm_j,w_jmj?,wj?)屬于穩(wěn)定匹配。結(jié)論和假設(shè)相互矛盾。因此說明GS算法執(zhí)行結(jié)束后男子都和最佳伴侶匹配到一起。
GS算法執(zhí)行結(jié)束后,每個(gè)女子都與其最差的有效伴侶匹配到一起。
- 假設(shè)GS算法結(jié)束后存在某個(gè)女子,并沒有與最差的有效伴侶匹配到一起。此時(shí)假設(shè)mim_imi?與wiw_iwi?匹配到一起,并且mim_imi?不是wiw_iwi?的最差有效伴侶。那么必然存在另外一個(gè)有效匹配,其中mjm_jmj?與wiw_iwi?匹配到一起,mim_imi?與wjw_jwj?匹配到一起。上述假設(shè)可知(1)wiw_iwi?喜歡mim_imi?多過喜歡mjm_jmj?。在GS算法結(jié)果中假設(shè)mim_imi?和wiw_iwi?匹配到一起而沒有選擇wjw_jwj?,可以得到(2)mim_imi?喜歡wiw_iwi?多過喜歡wjw_jwj?。兩個(gè)結(jié)論恰好與假設(shè)存在包括(mj,wim_j,w_imj?,wi?)(mi,wjm_i,w_jmi?,wj?)的穩(wěn)定匹配矛盾。因此原命題正確。
GS算法中求婚的一方可以得到最佳有效伴侶,而被求婚的一方只能得到最差的有效伴侶。
總結(jié)
- 上一篇: CVPR2022论文速递(2022.4.
- 下一篇: 解方程(equation)