- 这一节我们将用之前的知识用于解决一些实际的问题。
# 稳定匹配问题(The Stable Matching Problem,亦称为stable marriage problem)
# 问题描述
- 现在有名男性与名女性需要互相匹配
- 已知:
- 每位男性根据对所有女性的心仪程度从高至低进行排名;
- 每位女性根据对所有男性的心仪程度从高至低进行排名。
- 由此,我们需要找到一个最佳匹配(即尽量让每一位男性与女性互相找到最心仪的对象)
- 当然,稳定匹配问题也不局限于男女匹配,在现实中也有实习生与公司的匹配,学生与学校的匹配等。
# 提议-拒绝算法(亦称Gale–Shapley算法,The Propose-and-Reject Algorithm)
- 为了形象化地表示这个算法,我们举一个例子:
- 假设有4位男性(编号)和4位女性(编号),他们各自的心仪排名如下:
- :
- :
- :
- :
- :
- :
- :
- :
- 现在进行匹配:
- 首先,让四位女性站在四个固定的地方,让四位男性根据自己心仪排名的第一位进行配对:
- 接着,对于每位有候选男性的女性,根据自己的心仪排名,在候选男性中选择一位作为暂定匹配者,而拒绝其他所有男性;
| , |
- 然后,被淘汰的所有男性将被拒绝的女性从心仪排名中划去,再继续找排名往后一位的女性;
- 由此循环,直到每个男性都找到匹配的女性:
- 第二轮后:
,- 第三轮后:
, - 第四轮后:
,- 第五轮后:
, - 最终结果:
- 事实上,这个算法提出者之一Shapley也获得了2012年诺贝尔经济学奖(Gale没获奖是因为当时他已经去世了...)
- 那么,这个算法到底有什么用呢?(也就是说,它能够解决什么样的问题?)
# 现实的例子:住院医师匹配(The Residency match)
- 参考:NRMP the MATCH
- 简单来说,美国大约在100年前开始施行住院医师培训项目,但由于住院实习岗位供大于求,所以各个医院开始越来越早地给医学生发offer;而后美国医学协会(American Medical Association)介入,限制医学院不能提供大四以前学生的信息。
- 然而这造成了更混乱的结果——各大医院为了招到足够的住院实习生,开始给医学生发放超短期offer(有时甚至只有几个小时)
- 为解决这一问题,在上世纪50年代,美国医学协会国家发动住院医师匹配项目(NRMP),让医院与医师互相排名,再相互匹配。最终用到的算法就是Gale-Shapley算法。
# 提议-拒绝算法的性质
# 提议-拒绝算法是有穷的
- 证明(还是以上面的男女配对为例):
- 因为在经过一轮配对后,男性的心仪排名表中至少会有一位女性被划去,所以最多经过轮循环,配对一定会终止。
# 提议-拒绝算法是“好”的
- 首先,我们得定义怎样才算是“好”。从问题出发,我们认为“稳定”是衡量算法好坏的标准。这里的“稳定”是指:
- 对于任意一对非配对的男女,他们不会觉得彼此互相选择会更好(即对彼此的排名都没有现有伴侣的高)
- 如果出现互相选择会更好的一对男女,就把他们称为 异常配对(rogue couple)。
- 当然配对的男女可能对彼此的排名都比较靠后,要是他们更心仪的对象都有了更好的选择
- 那么,经过上述算法后的稳定匹配一定存在吗?
- 表面上似乎确实存在,只要将异常配对都重新配对上不就行了……吗?并不!
- 因为配对一对异常配对后,可能会产生更多的异常配对,导致陷入死循环。
- 不过,对于上述男女配对的问题,确实存在稳定的配对,而根本原因在于男性和女性这两种类型(即待分类的对象必须属于两个不同的类型)
- 表面上似乎确实存在,只要将异常配对都重新配对上不就行了……吗?并不!
- 下面我们会进行更加严谨的证明。
# 对提议-拒绝算法的分析
- 经过观察我们发现,在上述男女配对中,男性的选择总是越来越糟的(排名越来越后),而女性的选择总是越来越好的(排名越来越前)
- 改进引理(Improvement Lemma) : 如果男性在第天向女性求婚,那么在之后的每一天都至少有一个和一样好的暂留选择。
- 可以使用归纳法证明(过程略,因为比较直接)
- 基于上述引理,我们就可以对以下引理进行证明:提议-拒绝算法总能做到互相匹配。
- 证明过程:
- 假设提议-拒绝算法结束后,有男性未配对,那么也就是说他向所有个女性求婚但都被拒绝了;
- 由改进引理,这个女性既然拒绝了,就说明她们都至少各自有一个比更好的选择;
- 那么这个女性就有个比更好的男性和她们配对,也就是至少有位男性,这就推出了矛盾。
- 证明过程:
- 最终定理:由提议-拒绝算法得到的匹配是稳定的。
- 我们可以直接证明,在提议-拒绝算法得到的结果中,没有男性会在异常配对里。
- 假设在结果中的一个配对,其中对的喜好程度高于;
- 那么因为在的心仪排名中靠在之前,所以一定先选择了;
- 但是由结果可知被拒绝了,再由改进引理可知,已经有了比更好的选择;
- 所以不会舍弃结果分配的对象而选择,所以不是一个异常配对;
- 因为所有男性都不在异常配对里,所以最终得到的匹配就是稳定的。
# 最优化
- 让我们重新思考一下由提议-拒绝算法得到的匹配结果——它到底让谁的选择最优?有时在同一条件下会产生多种稳定的配对方案,那么对每个配对者而言,哪种方案对他们是最优的呢?
- 先对每个女性的最优配对选择进行定义:对于一个给定的女性而言,她的最优配对选择是所有稳定配对方案中的配对者之中排名最高的哪位男性。
- 然后可以定义 基于女性的最优配对方案 :在此方案中,每个女性的配对选择都是最优的。
- 类似的,我们也可以对每个男性的最优配对选择以及基于男性的最优配对方案进行定义,就不赘述了。
- 当然,我们同样可以定义男性/女性的最劣配对选择与方案。
- 有了这些定义,我们就可以得到一个重要结论:
- 由提议-拒绝算法得到的配对方案是基于男性的最优配对方案,也是基于女性的最劣配对方案。
- 下面对这个命题进行证明:
- 先证明“ 由提议-拒绝算法得到的配对方案是基于男性的最优配对方案 ”:
- 假设提议-拒绝算法得到的配对方案不是是基于男性的最优配对方案,那么就存在若干轮配对,在这些配对中,一些男性被他的最优配对选择拒绝了。
- 设为其中最早的一轮,在这一轮中,男性被他的最优配对选择拒绝了,而选择了为暂留对象。
- 根据最优配对选择的定义,一定存在一个配对方案,其中与配对,而与其他女性配对。
- 下面我们证明与是异常配对:
- 首先,能够确定的心仪列表中的排名比更高;另外,由于是最早的一轮,所以在第轮之前,并没有被他的最优配对选择拒绝(即还没找到最优配对选择);
- 那么既然在第轮向求婚,那么在心仪列表中的排名就至少在他的最优配对选择之上。
- 所以和就是异常配对,那么得到的配对方案就是不稳定的,推得矛盾。
- 所以提议-拒绝算法得到的配对方案是基于男性的最优配对方案。
- 再证明“ 由提议-拒绝算法得到的配对方案是基于女性的最劣配对方案 ”:
- 假设提议-拒绝算法得到的配对方案不是是基于女性的最劣配对方案,并假定方案中与配对。
- 那么就存在另一个配对方案,其中与配对,而与配对,其中在的心仪列表中排名比低。
- 那么就更喜欢,而在和中也更喜欢,因为在基于男性的最优配对方案中他与配对。
- 那么与就是另一个配对方案的异常配对,得到矛盾。
- 所以提议-拒绝算法得到的配对方案是基于女性的最劣配对方案。
- 先证明“ 由提议-拒绝算法得到的配对方案是基于男性的最优配对方案 ”:
- 证明完成。
- 这个结论同时也告诉我们,这个算法的决定权还是掌握在男性(第一步做出选择)的一方。
# 参考文献和书籍
D. Gale and L.S. Shapley, “College Admissions and the Stability of Marriage,” American Mathematical
Monthly 69 (1962), pp. 9–14
D. Gusfield and R.W. Irving, The Stable Marriage Problem: Structure and Algorithms, MIT Press, 1989.
