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会私奔

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

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
-
如果B是man-optimal,而A不是,那么B中至少一个有一个男的获得了更好的伴侣。
-
假设在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\) -
因为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
-
如果B是woman-pessimal,而A不是,那么B中至少一个有一个女的获得了更差的伴侣。
-
假设在A中,\(m_0\)和\(w_1\)在一起,而\(m_0\)不是\(w_1\)最差的选择;
在B中\(m_2\)和\(w_1\)在一起,而\(m_2\)是\(w_1\)最差的选择
也就是对于\(w_1\),比起\(m_2\)更喜欢\(m_0\) -
假设在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的

浙公网安备 33010602011771号