稳定匹配

稳定匹配


算法 网络流

这篇文章将介绍一个1962年提出的经典算法问题:稳定匹配。

1. 问题起源

在1962年,经济学家 David Gale 和 Lloyd Shapley 提出:能否设计一个高校录取过程,能够自我执行(self-enforcing)形成一个最佳的匹配效果。

算法的 C++ 实现代码请移步 Github:https://github.com/hotelll/CS222Note/tree/master/StableMatching

2. 问题描述

给出一个 nn 个男性的集合 MMnn 个女性的集合 WW,找到一个“稳定”匹配。

  • 每位男性根据对女性的心仪程度从高至低进行排名;

  • 每位女性根据对男性的心仪程度从高至低进行排名。

3. 名词定义

3.1 匹配

匹配 SS 是一个包含有序数对 mwm-w 的集合,其中 mMm\in MwWw\in W,其中:

  • 每个男性最多出现在一个数对中;
  • 每个女性最多出现在一个数对中。、

3.2 完美匹配

如果S=M=W=n|S|=|M|=|W|=n,则匹配 SS 是完美匹配。

3.3 不稳定对

给出一个完美匹配 SS,男性 mm 和女性 ww 是不稳定的,如果同时满足下列条件:

  • mm 相比起当前配偶,更喜欢 ww;
  • ww 相比起当前配偶,更喜欢 mm

3.4 稳定匹配

一个不包含不稳定对的完美匹配。

3.5 正当配偶 Valid Partner

如果存在一个稳定匹配中男性 mm 和女性 ww 匹配在一起,则称女性 ww 是男性 mm 的正当配偶。

3.6 稳定匹配问题

给出 nn 个男性和 nn 个女性的喜好列表,寻找一个稳定匹配。

注意事项: 稳定匹配不一定存在,同时也不一定是唯一的。

4. Gale-Shapley 算法

4.1 伪代码实现

GS算法

4.2 算法性质

4.2.1 总体设计

  • 男性根据喜好降序向女性求婚;

  • 一旦一位女性找到配偶,她将不会再单身,只会替换成更好的。

4.2.2 有穷性:算法最多在 n2n^2 次 while 迭代后一定会结束。

证明:

while 循环中每次男性向一位女性求婚,最多只有 n2n^2 次求婚。

4.2.3 完美性:算法中所有男性和女性都匹配完毕。

证明(反证法):

  • 假设:存在男性 Z 在算法终止后仍然未匹配到女性

  • 由此可知,一定有一位女性,假设为 A,也没有匹配到男性

  • 根据算法,一位单身女性一定会同意向她求婚的男性,且女性一旦有配偶就不会再次单身(特征2),所以女性 A 一定没有被求过婚

  • 根据算法 while 循环条件,男性 Z 一定向所有女性求过婚算法才会终止

  • 因此男性 Z 向女性 A 求过婚

  • 3与5产生矛盾,假设不成立,证明完毕

4.2.4 稳定性:算法产生的匹配中,不会有不稳定对

证明:

  • 假设:GS 匹配 SS^* 不包含数对 A-Z

  • 情况1:Z 从未向 A 求婚

    • Z 比起 A 更喜欢 GS 算法得到的配偶 B
    • A-Z 是稳定对
  • 情况2:Z 向 A 求过婚

    • A 拒绝了或抛弃了 Z
    • A 比起 Z,更喜欢 GS 算法得到的配偶 Y
    • A-Z 是稳定对
  • 因此 GS 匹配中不包含的对一定是稳定的,即GS匹配中没有不稳定对

4.2.5 男性最佳分配 Man-optimal Assignment

GS 算法中每个男性都能分配到最佳的正当配偶,所以 GS 算法得到的分配一定是男性最佳分配。

证明:

  • 假设:一位男性与一位女性匹配,该女性不是最佳正当配偶
  • 因为男性根据喜好降序求婚
    • 所以有男性在 GS 算法中被正当配偶拒绝
  • 令 Y 是第一个这样的男性,同时令 A 是第一个拒绝他的正当配偶
  • SS 是一个包含 A-Y 的稳定匹配
  • 在 GS 中,当 Y 被 A 拒绝时,A 与男性 Z 配对
    • 所以,A 比起 Y 更喜欢 Z
  • SS 中令 B 是 Z 的配偶
  • GS 中,Z 在 Y 被 A 拒绝的时候,还没有被任何正当配偶拒绝(因为我们令 Y 和 A 是第一对这样的男女)
  • A-Z 和 B-Z 都是正当配偶,现在已知在 GS 中 Z 与 A 配对
  • 如果 Z 在向 A 求婚时,如果已经向 B 求过婚,一定被拒绝了,上上条矛盾
  • 因此,当 Z 向 A 求婚时,他还没有向 B 求过婚
    • 所以,Z 比起 B 更喜欢 A
  • 因此,A-Z 在 SS 中是不稳定的。
  • 因此假设不成立,GS 算法是男性最佳策略

4.2.6 女性最劣分配

GS 算法中女性一定分配到的是最差的正当配偶。

证明:

  • 假设: A-Z 在稳定匹配 SS^* 中匹配,但是 Z 不是 A 的最差正当配偶
  • 那么,存在稳定匹配 SS,其中 A 与 Y 配对,且 Y 是更差的正当配偶
  • 所以 A 比起 Y 更喜欢 Z
  • SS 中,令 B 是 Z 的配偶,根据男性最优性,A 是 Z 的最佳正当配偶
  • 所以 Z 比起 B 更喜欢 A
  • 因此,A-Z 在 SS 中是不稳定对,存在矛盾

关键:主动发起求婚的一方总是获得优势。

© 2024 Hotel