Stable Matching

场景

有n个男的,n个女的,他们想要一一成对
而且他们各自都有对异性,根据他们想要和对方在一起的程度做排名
我们需要将他们一一配对,我们把最后的男女组合,叫做matching

假设matching S存在这样的一男M,一女W,他们虽然没有成对,他们都觉得,比起他们现在的伴侣,M更想和W在一起,W也更想和M在一起,那他们就会私奔,我们称为unstable pair。我们把这样的matching S叫做unstable matching

下面的例子中,X-C, Y-B, Z-A就是一个unstable matching,因为X-B会私奔
image

我们的目标就是找到一个stable matching

算法

一个情况下,可能有多种stable matching
以下的叫做Gale-Shapley Algorithm,能找到一个man-optimal, woman-pessimal的stable matching
也就是在找到的matching中,男人会尽量和自己更喜欢的女人匹配,女人会尽量和自己更不喜欢的男人匹配
image

Gale-Shapley算法是\(O(n^2)\)的复杂度

算法证明

stable-matching

一定不会出现一男一女各自落空,没有对象的情况
在Gale-Shapley中,女的第一次被求婚就会接受,此后只会找到更好的伴侣,而不会变成单身。女的最后落空只会是因为没有被求婚过
而男的在最差情况下,会对所有女生求婚,如果找到单身的女生,那么就会成对
不可能出现一男一女各自落空的情况

不会存在unstable的配对
假设Gale-Shapley Matching中存在一男M,一女W,他们是unstable pair
那么M一定会先向W求婚,再向当前的伴侣求婚,而且被W拒绝了
W拒绝M的原因一定是,已经有了比M更好的伴侣,所以M和W不会是unstable pair

man-optimal

反证法
假设在同一个场景下
Gale-Shapley Algorithm找出的matching为A,A不是man-optimal matching
存在一个stable matching为B,B是man-optimal matching

440px-DA-men-optimality
  1. 如果B是man-optimal,而A不是,那么B中至少一个有一个男的获得了更好的伴侣。

  2. 假设在A中,\(m_0\)是在整个求婚过程中最先被拒绝的男人,拒绝他的女人是\(w_1\),而在B中\(m_0\)\(w_1\)成功匹配
    从2中,我们可以知道,在A中,\(m_0\)曾经向\(w_1\)求婚,但是\(w_1\)已经有了对象,对象记为\(m_2\)。而在B中,\(w_1\)虽然更喜欢\(m_2\),但还是选择了\(m_0\)

  3. 因为B是stable matching,那么B中,\(m_2\)一定和一个,比起\(w_1\)更喜欢的女人在一起了,记为\(w_3\)
    那么在A中,\(m_2\)一定先向\(w_3\)求婚,被拒绝,然后再向\(w_1\)求婚,然后在一起,但这与我们假设的“\(m_0\)是在整个求婚过程中最先被拒绝的男人”相违背,证明B不存在,A是man-optimal的

woman-pessimal

反证法
假设在同一个场景下
Gale-Shapley Algorithm找出的matching为A,A不是woman-pessimal matching
存在一个stable matching为B,B是woman-pessimal matching

  1. 如果B是woman-pessimal,而A不是,那么B中至少一个有一个女的获得了更差的伴侣。

  2. 假设在A中,\(m_0\)\(w_1\)在一起,而\(m_0\)不是\(w_1\)最差的选择;
    在B中\(m_2\)\(w_1\)在一起,而\(m_2\)\(w_1\)最差的选择
    也就是对于\(w_1\),比起\(m_2\)更喜欢\(m_0\)

  3. 假设在B中\(m_0\)\(w_3\)在一起,因为我们已经证明了Gale-Shapley找出的A是man-optimal的,所以对于\(m_0\),比起\(w_3\)更喜欢\(w_1\)
    这样的话B中,\(m_0\)\(w_1\)是unstable的,所以B不存在,A是woman-pessimal的

posted @ 2022-06-15 12:08  wcvanvan  阅读(207)  评论(0)    收藏  举报