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