算法导论(第三版)-复习- 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. 算法导论(第三版)-复习- Stable Matching Problem_第1张图片
  3. 算法导论(第三版)-复习- Stable Matching Problem_第2张图片
    所以男性一定能选到对于他来说结果最好的stable的match

你可能感兴趣的:(算法,算法导论)