稳定匹配问题(一)
经典稳定匹配问题--Gale-Shapley算法[1]
1. 算法描述
算法特点:延迟决定、产生的结果有偏向性
举例说明: man woman woman man
1:A B C A:2 1 3
2:B A C B:1 2 3
3:A B C C:1 2 3
算法产生的稳定匹配:
1.男士主动:{(1,A),(2,B),(3,C)}
2.女士主动:{(1,B),(2,A),(3,C)}
2. 算法的时间复杂度为,平均时间复杂度为
3. 算法正确性:最终产生一个稳定的完美匹配
4. 算法有趣的性质
(1)男士的对象越来越差、女士的对象越来越好
(2)最终产生的分配是对所有男士的最佳的稳定匹配(male-optimal)
(3)最终产生的分配是对所有女士的最差的稳定匹配(female-optimal)
(如果是女士主动,则最终产生的分配是对所有女士最佳、对所有男士最差的稳定分配)
很明显,经典的问题gale-shapley算法只是可以得到一组带有偏向性的稳定匹配结果,而在文献[2]中提出了一个可以找出所有稳定匹配结果的方法,该方法的可以在多项式时间内找到结果。
方法解析如下:
例子采用论文中的例子(每一行的第一个数表示行数)
男性最初列表 [[1, 3, 1, 5, 7, 4, 2, 8, 6], [2, 6, 1, 3, 4, 8, 7, 5, 2], [3, 7, 4, 3, 6, 5, 1, 2, 8], [4, 5, 3, 8, 2, 6, 1, 4, 7], [5, 4, 1, 2, 8, 7, 3, 6, 5], [6, 6, 2, 5, 7, 8, 4, 3, 1], [7, 7, 8, 1, 6, 2, 3, 4, 5], [8, 2, 6, 7, 1, 8, 3, 4, 5]]
女性最初列表 [[1, 4, 3, 8, 1, 2, 5, 7, 6], [2, 3, 7, 5, 8, 6, 4, 1, 2], [3, 7, 5, 8, 3, 6, 2, 1, 4], [4, 6, 4, 2, 7, 3, 1, 5, 8], [5, 8, 7, 1, 5, 6, 4, 3, 2], [6, 5, 4, 7, 6, 2, 8, 3, 1], [7, 1, 4, 5, 6, 2, 8, 3, 7], [8, 2, 5, 4, 3, 7, 8, 1, 6]]
之后通过2点的要求得到一个shortlist,要求如下:(m表示男性,w表示女性)
1)如果m与w匹配,那么代表着m不存在其他的稳定匹配可以让他获得比w更好的伙伴
2)如果w接受了m,那么代表w不存在其他的稳定匹配可以让她比m更差的伙伴
简化男性列表 [[3, 1, 5, 7, 4], [1, 3, 4, 8, 7], [7, 4, 3, 1, 2, 8], [5, 8, 6, 1, 4, 7], [4, 2, 8, 7, 3, 6, 5], [6, 5, 7, 4, 3], [8, 6, 2, 3, 4, 5], [2, 7, 1, 3, 5]]
简化女性列表 [[4, 3, 8, 1, 2], [3, 7, 5, 8], [7, 5, 8, 3, 6, 2, 1], [6, 4, 2, 7, 3, 1, 5], [8, 7, 1, 5, 6, 4], [5, 4, 7, 6], [1, 4, 5, 6, 2, 8, 3], [2, 5, 4, 3, 7]]
而后根据以下2点要求得到rotations:
1)在的shortlist的第一位
2)是的shortlist中的第二位
可以得到以下rotations:
[[[1, 3], [2, 1]], [[3, 7], [5, 4], [8, 2]], [[4, 5], [7, 8], [6, 6]]], [[[1, 1], [6, 5], [8, 7]], [[2, 3], [3, 4]], [[4, 8], [7, 6], [5, 2]]], [[[2, 4], [5, 8], [6, 7]], [[3, 3], [8, 1]]], [[[1, 5], [5, 7], [8, 3]]], [[[3, 1], [7, 2], [5, 3], [4, 6]]]
Rotations之间的索引关系为:
{1: none, 2: none, 3: none, 4: {1, 2, 3}, 5: {1, 2}, 6: {2, 3}, 7: {4, 5, 6}, 8: {4, 5}, 9: {8, 7}, 10: {9}}
根据rotations可以得到以下23种稳定匹配的结果:
[[[1, 3], [2, 1], [3, 7], [4, 5], [5, 4], [6, 6], [7, 8], [8, 2]],
[[1, 1], [2, 3], [3, 7], [4, 5], [5, 4], [6, 6], [7, 8], [8, 2]],
[[1, 3], [2, 1], [3, 4], [4, 5], [5, 2], [6, 6], [7, 8], [8, 7]],
[[1, 3], [2, 1], [3, 7], [4, 8], [5, 4], [6, 5], [7, 6], [8, 2]],
[[1, 1], [2, 3], [3, 4], [4, 5], [5, 2], [6, 6], [7, 8], [8, 7]],
[[1, 1], [2, 4], [3, 3], [4, 5], [5, 2], [6, 6], [7, 8], [8, 7]],
[[1, 1], [2, 3], [3, 7], [4, 8], [5, 4], [6, 5], [7, 6], [8, 2]],
[[1, 3], [2, 1], [3, 4], [4, 8], [5, 2], [6, 5], [7, 6], [8, 7]],
[[1, 3], [2, 1], [3, 4], [4, 6], [5, 8], [6, 5], [7, 2], [8, 7]],
[[1, 1], [2, 3], [3, 4], [4, 8], [5, 2], [6, 5], [7, 6], [8, 7]],
[[1, 5], [2, 3], [3, 4], [4, 8], [5, 2], [6, 7], [7, 6], [8, 1]],
[[1, 1], [2, 4], [3, 3], [4, 8], [5, 2], [6, 5], [7, 6], [8, 7]],
[[1, 1], [2, 3], [3, 4], [4, 6], [5, 8], [6, 5], [7, 2], [8, 7]],
[[1, 5], [2, 4], [3, 3], [4, 8], [5, 2], [6, 7], [7, 6], [8, 1]],
[[1, 5], [2, 4], [3, 1], [4, 8], [5, 2], [6, 7], [7, 6], [8, 3]],
[[1, 5], [2, 3], [3, 4], [4, 6], [5, 8], [6, 7], [7, 2], [8, 1]],
[[1, 1], [2, 4], [3, 3], [4, 6], [5, 8], [6, 5], [7, 2], [8, 7]],
[[1, 5], [2, 4], [3, 3], [4, 6], [5, 8], [6, 7], [7, 2], [8, 1]],
[[1, 5], [2, 8], [3, 3], [4, 6], [5, 7], [6, 4], [7, 2], [8, 1]],
[[1, 5], [2, 4], [3, 1], [4, 6], [5, 8], [6, 7], [7, 2], [8, 3]],
[[1, 5], [2, 8], [3, 1], [4, 6], [5, 7], [6, 4], [7, 2], [8, 3]],
[[1, 7], [2, 8], [3, 1], [4, 6], [5, 3], [6, 4], [7, 2], [8, 5]],
[[1, 7], [2, 8], [3, 2], [4, 1], [5, 6], [6, 4], [7, 3], [8, 5]]]
如果刚好你也在研究稳定匹配问题,可以私聊我哈,探讨一下。
参考文献:
[1] 王培志,杨依山.劳埃德·沙普利对经济学的贡献——2012年度诺贝尔经济学奖得主学术贡献评介[J].经济学动态, 2012(12):94-100.
[2]Irving R W, Leather P, Gusfield D. An efficient algorithm for the “optimal”stable marriage[J]. Journal of the Acm, 1987, 34(3):532-543.