zoukankan      html  css  js  c++  java
  • GaleShapley算法

     Gale-Shapley算法
    来源: 刘进的日志

    Gale-Shapley算法

    近来学习了很有趣的Gale-Shapley算法,又名求婚-拒绝算法。

    n个男人和n个女人相互配对。每个男人m对所有的女人排名,如果m给w的排名高于w’,就说m偏爱w超过w’。把m的按顺序的排名作为他的优先表。类似的,每个女人也对所有的男人排名。要求求他们的一个稳定匹配。

    所谓稳定匹配是这样的:给定一个完美匹配S,如果在S中存在两个对(m,w),(m’,w’),其中m更爱w’,且w’更爱m,那么配对(m,w’)就是一个不稳定的因素,他们原来的婚姻都将不稳定。我们的目标就是建立一个不含有上述不稳定因素的配对集合。

    算法如下:

     

    初始所有的m∈M和w∈W都是自由的

    While 存在男人m是自由的且还没对n个中每个女人都求过婚

       选择一个这样的男人m

       令w是m的优先表中m还没求过婚的最高排名的女人

       If  (w是自由的)

         (m,w)变成约会状态

       Elseif(w当前与m’)约会

              If  w是更偏爱m’then

                  m保持自由

              Else w更偏爱m  then

                  (m,w)变成约会状态

                   m’变成自由

              endif

        endif

    Endwhile

    输出已约会的配对的集合,即为稳定匹配。

     

    算法分析得知,这个算法带有某种不公平性,即如果男的求婚,女的就是不幸的;而如果女的求婚,男的也是如此。例子如下:

    有这样的优先表:

    m更加偏爱w甚于w’,即在m的表中w排在w’的前面

    m’更加偏爱w’甚于w

    w更加偏爱m’甚于m

    w’更加偏爱m甚于m’

    那么执行这个算法将得到(m,w),(m’,w’)这样的稳定配对,然而女人的偏爱被忽略了。w是更加偏爱m’的,w’更加偏爱m的,但是她们都没能得到满意的。
  • 相关阅读:
    ORA-01861: 文字与格式字符串不匹配
    Tomcat启动失败Unrecognized Windows Sockets error: 0: JVM_Bind
    登陆数据库,界面一直保持正在登陆的状态,oracle使用界面无法登陆
    java.sql.SQLException: 关闭的连接
    如何提高家庭宽带的网速?
    打爆IPv4的不一定是IPv6,可能是中国互联网!
    LibreOffice 7.0.1 发布,开源办公套件
    iPhone12系列售价曝光
    TikTok正式起诉特朗普政府
    WordPress主题ripro 6.6
  • 原文地址:https://www.cnblogs.com/acSzz/p/2728461.html
Copyright © 2011-2022 走看看