日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

匹配问题

發布時間:2023/12/18 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 匹配问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

匹配問題

    • 匹配問題中的重要概念
    • GS算法
    • GS算法的幾個特性

匹配問題中的重要概念

  • 匹配,假設有男人的集合M和女人的集合W,每個男人向女人W求婚,并且兩個人成功組成一對,就叫做匹配
  • 完美匹配,假設集合M和集合W的數量相同,都是n,即n個男人,n個女人,如果使用一種算法,最后所有的男人和女人成功匹配,沒有一個單身的男人或者單身的女人,那么就叫做完美匹配
  • 不穩定匹配,假設完美匹配形成了集合S,其中男人mim_imi?和女人wjw_jwj?匹配形成(mi,wj)(m_i, w_j)(mi?,wj?),而另外又有男人mkm_kmk?和女人wlw_lwl?匹配形成(mk,wl)(m_k, w_l)(mk?,wl?),如果S的匹配中,與wjw_jwj?比起來,mim_imi?更喜歡人妻wlw_lwl?,與mkm_kmk?比起來,wlw_lwl?更喜歡mim_imi?,那么沒有什么可以阻擋mim_imi?拋棄當前妻子wjw_jwj?而與wlw_lwl?結合,形成新的一個匹配(mi,wl)(m_i, w_l)(mi?,wl?),這就說明形成的匹配S是一個不穩定的匹配,因為根據喜歡因素,這些匹配會被打破而形成新的匹配,包含這種不穩定因素的匹配叫做不穩定匹配
  • 穩定匹配,假如最終形成的完美匹配結果是S,里面所有的女人都對當前的男人滿意,或者男人對當前配對的女人滿意,那么就不會出現打破原有組合形成新的匹配的可能性,此時匹配S叫做穩定匹配
  • 有效伴侶,假如在男人集合M和女人集合W進行匹配,得到集合S,S中包含(m,w),那么說明w是m的有效伴侶,同樣的,m也是w的有效伴侶。
  • 最佳伴侶,穩定匹配可能不唯一,假如穩定匹配集合S中包含匹配(m,w), 而其他任何穩定匹配中包含(m,wi)(m,w_i)(m,wi?),而m對所有女人的喜好從高到低排序過程中,w始終在wiw_iwi?前面,那么說明w是m的最佳伴侶,表示為best(m)。
  • 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三位男子最心儀的三位女生,依次心儀程度依次從高到低排列。例如:

    男子心儀女生1心儀女生2心儀女生3
    0MarryPennyMoon
    1MarryMoonPenny
    2PennyMoonPenny

    女生則是通過索引可以直接查找對男子的評分,方便比較求婚的男子是否比當前匹配的男子更令她心儀。

    女子0號男子1號男子2號男子
    Marry10分7分5分
    Penny4分5分10分
    Moon8分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))mM }

    • 假設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算法中求婚的一方可以得到最佳有效伴侶,而被求婚的一方只能得到最差的有效伴侶。

  • 總結

    以上是生活随笔為你收集整理的匹配问题的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。