稳定婚姻问题

稳定婚姻问题涉及男士和女士按照喜好排序进行配对,以找到无异议的稳定匹配。通过GALE-Shapley算法,可以解决这个问题。文章介绍了算法的基本概念、实施步骤,并提供了伪代码解释和代码实现。
摘要由CSDN通过智能技术生成

稳定婚姻问题指的是一定数量的男士按照自己的喜好程度对相同数量的女士进行排序,然后进行配对形成稳定婚姻关系。这种配对关系对双方都是比较满意的。

一、基本概念

为了介绍稳定婚姻问题中的“稳定”的意思,我们先介绍一下什么是“不稳定”:在当前所有匹配中存在A男士和B女士,他们没有配对,但是比起当前的伴侣,他们更加喜欢对方。不存在这种情况的配对就是稳定婚姻。稳定婚姻问题就是要根据给定的男士和女士的优先选择,求出一个稳定的婚姻匹配。

例如,男士有小王、小李、小赵,女士有翠花、舒敏、月儿,下面是他们各自对异性的喜好排序情况,求出一个稳定婚姻匹配。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二 、使用方法及步骤

步骤一:从自由男士中选择一个,向他的优先列表中的没有拒绝过他且优先权最高的女士求婚,如果该女士未配对,则接受,如果该女士已配对,则女士比较该自由男士和当前与她配对的男士的优先权,选择优先权高的男士;

步骤二:继续下一次配对。

三 、代码

伪代码

Initialize all men and women to free
while there exist a free man m who still has a woman w to propose to 
{
   
    w = m's highest ranked such woman to whom he has not yet proposed
    if w is free
       (m, w) become engaged
    else some pair (m', w) already exists
       if w prefers m to m'
          (m, w) become engaged
           m' becomes free
       else
          (m', w) remain engaged    
}

上述伪代码叫做GALE-Shapley算法
在这里插入图片描述

翻译伪代码
假设m代表男人,w代表女人
1、初始化假设所有男女都未配对
2、当有一位男生未配对同时有一位女士未被追求(或者说未被提出配对要求)
执行循环
{
w=男人首先选择心目中的最佳人选(女人),同时这位女士未被追求(或者说未被提出配对要求)
如果这个女士暂未配对
那么使(m,w)配对
否则 已经存在配对(m’,w),通俗地讲就是人家有男朋友了
如果 这个女士更喜欢m,而不是m’,
那么(m,w)就重新配对,
m’就自由了,也就是陪抛弃了
否则 (m’,w)任然配对
}
下面用代码实现下

# Python3 program for stable marriage problem

# Number of Men or Women
N = 4

# This function returns true if
# woman 'w' prefers man 'm1' over man 'm'
def 
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值