算法(一)稳定匹配

稳定匹配

根据医院和医学院学生的一系列偏好,设计一套自我执行的入学程序。
非稳定配对: 若x更喜欢 y 而不是指定的医院。或者y更喜欢 x 而不是其入院的学生,则x和 医院 y 是不稳定的:
稳定分配。没有非稳定配对的分配。

稳定匹配问题

参与者对异性成员的评价
每个男人按照优先顺序从最好到最坏的顺序列出女人。
每个女人按照优先顺序从最好到最坏的顺序列出男人
在这里插入图片描述

完美匹配与稳定配对

完美匹配 perfect matching

  • 指一个表中的每个条目都恰好匹配另一个表中的一个条目,反之亦然。在课堂上的例子中,这意味着每个男人和一个女人匹配,每个女人和一个男人匹配。

稳定匹配 stable matching

  • 是没有不稳定对的完美匹配。换句话说,这既要求与某项匹配的条目数量(仅为1比1),也要求不能有一对(X,Y)使得X在当前匹配中更喜欢Y,而Y在当前匹配中更喜欢X。

所以完美匹配只是说可以匹配的元素的数量,但它没有说匹配需要是稳定的。

不稳定配对

在这里插入图片描述

同桌问题

在同桌问题中,稳定匹配不总是成立
在这里插入图片描述

婚姻问题

在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
稳定匹配算法是一种经典的算法,用于解决匹配问题。其中,gs(Gale-Shapley)算法是最为常见的一种稳定匹配算法,通过迭代的方式,将多对男女进行配对,使得每对配对都是稳定的。 在Python中,我们可以使用以下方式实现gs稳定匹配算法: 首先,创建两个队列,分别为男性和女性的队列,分别用man_list和woman_list来表示。然后,对于每个男性和女性,我们可以定义一个“prefer”列表,用于记录该人对对方倾向程度的排序。 接下来,我们创建一个空的字典,用于保存每个男性与其配对的女性的关系。我们将字典命名为matches。然后,创建一个空的字典,用于保存每个女性与其配对的男性的关系。将该字典命名为inverse_matches。 然后,我们开始进行迭代,直到所有男性都有配对为止。在每一轮迭代中,对于每个男性,我们取出他还未提出过请求的最喜欢的女性。然后,对于这个女性,我们判断她是否已经有了男性的配对。如果是,我们比较该女性的现有男性和当前男性,如果当前男性更受女性喜欢,则我们将当前男性与该女性配对,并更新matches和inverse_matches。如果不是,我们直接将当前男性与该女性配对,并更新matches和inverse_matches。 最后,当所有男性都有配对时,我们可以返回matches字典作为最终的稳定匹配结果。 以上就是用Python实现gs稳定匹配算法的简要步骤。当然,具体的实现细节可能会根据实际情况有所不同,但是核心思想和步骤是相似的。希望能对您有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值