算法導論(第三版)-複習- Stable Matching Problem

穩定婚姻算法 - 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
    }
}

顯然本算法帶有不公平性,能夠保證男性得到最滿意的,但女性最糟糕。如果改爲女性向男性求婚,則相反。

  1. O(n2 )
  2. get matched
  3. Stability
  4. Man-optimal
    所以男性一定能選到對於他來說結果最好的stable的match

  5. Woman-pessimal

發佈了37 篇原創文章 · 獲贊 12 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章