稳定婚姻问题

问题

n n n个男生和 n n n个女生,有 2 n 2n 2n个排列 p 1 , p 2 ⋯ p n , q 1 , q 2 ⋯ q n p_1,p_2\cdots p_n,q_1,q_2\cdots q_n p1,p2pn,q1,q2qn p i p_i pi代表第 i i i个男生的喜好( p i , 1 p_{i,1} pi,1表示他最喜欢的女生, p i , 2 p_{i,2} pi,2是他第二喜欢的,以此类推), q i q_i qi代表第 i i i个女生的喜好。

稳定婚姻问题即,求一个男生和女生的完美匹配 M M M,使得不存在 ( x , y ) ∉ M (x,y)\not\in M (x,y)M x x x y y y的好感高于 x x x现在的配偶且 y y y x x x的好感高于 y y y现在的配偶。

Gale–Shapley算法

过程

迭代进行以下过程 n n n次:

  • 对于每一个没有订婚的男生,让他向他目前还没有求爱过的女生中他最喜欢的那个求爱(不管那个女生是否已经订婚)。然后,每一个女生在这一轮向她求爱的男生以及她原来的配偶中,选择一个她最有好感的,作为她现在的配偶。可能会出现女生和原来配偶撕约的情况,但是被撕约了的男生将加入下一轮的求爱。

正确性

求出来的肯定是一个匹配,并且是完美匹配,因为只要一个女生被求过爱,之后就不可能单身了。

整个过程中,女生的配偶会越来越好,而男生的配偶会越来越差。所以当算法结束的时候,对于每个男生,比他现在的配偶更好的女生的配偶一定都比他好。

时间复杂度

迭代 n n n次,每次复杂度 O ( n ) O(n) O(n),总时间复杂度 O ( n 2 ) O(n^2) O(n2)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值