有趣的算法(一):如何让有情人终成眷属

***算法与编程艺术*** 同时被 3 个专栏收录
35 篇文章 0 订阅
6 篇文章 10 订阅

我的机器学习教程「美团」算法工程师带你入门机器学习  以及 「三分钟系列」数据结构与算法  已经开始更新了,欢迎大家订阅~这篇专栏整合了这几年的算法知识,简单易懂,也将是我实体书的BLOG版。

欢迎大家扫码关注微信公众号「图灵的猫」,除了有更多AI、算法、Python相关文章分享,还有免费的SSR节点和外网学习资料。其他平台(微信/知乎/B站)也是同名「图灵的猫」,不要迷路哦~

 

数学与算法告诉我们,有情人必将终成眷属,只是缺少方法

看过《非诚勿扰》的同学一定还记得节目中的相亲模式,当男嘉宾入场后会首先选择最喜欢的心动女生,然后在几轮“面试”后由最后亮灯的女生,也就是心仪男嘉宾的女生与男嘉宾一开始选择的心动女生做比较。结果有三种可能性:

  1. 男嘉宾心仪的女生就是最后留灯的女生
  2. 男嘉宾的心动女生灭灯了,而心仪男嘉宾的女生留灯
  3. 没有人为男嘉宾留灯

 

有趣的是,有时候,留灯的女生即便是男嘉宾不喜欢的类型,很多时候也会被牵手,而也有女嘉宾在台上站了很多期节目,被优质的人翻号,却没有被所带走,到最后反而被一些很普通的男生牵手成功。
现在,考虑将上述过程的选择次数增加至多次,并允许与女嘉宾人数(假设为N)相同的男嘉宾同时上台。此时情况略微复杂,我们假定每位男嘉宾可以有多位心动女生,并且排名有先后,女嘉宾同样如此。
那么在这个男女双方互选的过程中,如何得到最优的配对,即自己喜欢的人总能与喜欢自己的人在一起呢?答案是,选择的次数与心仪对象在心中的先后位次不同。
如果将两个相互喜欢的恋人之间的相遇相识,视为一次配对,那么对于任意多次配对,如何最优化输出结果,令配对完成后所有人都能找到自己最优的伴侣,便是算法的目标。
罗斯在《共享经济》中说,“市场的核心是配对”。数学中我们对市场行为做出了最优解的预测,此类解会给出收益最大化,风险最小化的可行项。那么,如果我们将感情关系中的相互选择看做是市场的交易行为,很容易发现,我们的核心也同样是这两个字——配对

 


情侣配对问题

一.立即接受算法:

对于约会的配对,大家都去追自己最心仪的女生。而这个女生面对几位追求者,要立刻做个决定。
被拒绝的男生们调整一下心情,再去追求心中的 No. 2。以此类推。

这样做法有一个严重的问题:当你被你的No.1拒绝后,再去追求你的No.2的时候,你心中的No.2可能已经在第一轮中选择了其他人。
但坑爹的是,有可能你正是你心中No.2心中的No.1,但是她并不知道。所以她在第一轮中,因为没有被你追求,而屈就他人。当你你在第一轮中表白失败,再去找你的No.2 时,已然晚矣。
假设班上有三位男生(分别是A,B,C),三位女同学(分别是x,y,z)

见图一(左女右男):

 

 

他们心中对异性的排名见图二。在女x的心中A>B,意味着A要好于B。

 

 

第一轮中,男生们向心中的No.1女示好,即A,B两男向心中最喜欢的x女示好,而C男向y女示好。如图三所示。

 

 

(在第一轮,女y 只有一个追求者,只能屈就)如果采用立即接受算法,此轮之后的结果是,x-A,y-C两对结成情侣。注意,y女虽然心中首选是B男,但是由于B男在此轮中正在追逐x女,无奈下y女屈就于唯一来献殷勤的C男。比及第二轮开始时,唯一还没配对的就是z女和B男了,所以B男只能接受z女。 

 

 

最后的结果是x-A,y-C,z-B三对恋人。
注意:y女和B男两人都更愿意离开自己的现任伴侣而彼此在一起。如果二人结为伴侣,那么彼此的忠诚度与长久的稳定度必然小于A女与X男,也就是相互不喜欢的人在一起白头偕老的可能性,会更低于那些相互喜欢的人。
这种不稳定的“婚姻系统”状态就是很多文学影视作品的来源,也是生活中的八卦来源。而在数学上,这也恰恰被称为是“不稳定”的组合。所以,顾名思义,我们希望能够有种算法,给我们的结果是所有配对都是稳定的,让天下有情人都终成眷属。
怎么做呢?一个词:hold住

 


二.延迟接受算法

延迟接受算法的步骤如下:
Round 1
每个男生向自己心中的No.1示爱。但是各位姑娘们不用立即决定,而是先hold住。
Round 2
每个男生再向心中的No.2示爱。从第二轮开始,每位姑娘们只保留自己到现在为止所收获的最心仪的男生(但是不用答应他,只hold在心理),而拒绝其他所有人。
而被拒绝的男生(也就是现在尚没有人hold着你的男生)则继续在下一轮中向心中排名的下一个姑娘表白。
Round 3 to n
以此类推,一轮轮继续下去,直到所有想示爱的男生都示完为止。此时,每个手中有offer的姑娘,可以选择接受。也就是说,先让女生获得完全信息(这类情况在生活中也较为常见)

以上就是延迟接受算法的做法。大家仔细算一下就会发现,在这个简单的例子中,最后的结果是x-A,y-B,z-C三组恋人终成眷侣。而这是一个稳定的系统输出结果,即:
所有6人中,你不可能找到一男一女符合以下条件:
他们都更愿意抛弃已有的伴侣而与彼此在一起。
因此,这些配对的情侣之间,由于他人因素的分手,以及单方面的出轨行为发生的概率,会明显低于第一种算法所配对的情侣

     

 

延迟接受算法(deferred-acceptance algorithm)能够从数学上证明是一定会产生稳定配对的算法,也叫做盖尔-沙普利算法(the Gale-Shapley algorithm),因为具体的算法是始于盖尔和沙普利的配对实验。
罗斯在《共享经济》中介绍了他将延迟接受算法分别运用于肾脏移植市场,全国住院医生配对程市场和高中择校系统,实现了稳定的配对,取得了非常好的成果。

 


感情中我们难免都会略有遗憾,完美的情感算法并不存在,也不会有一个万能的观测者(比如月老)来为我们选择配对。但是如何决定自己的预期与选择,如何最好地在现实与理想型之间均衡选择,却是我们可以改变的。
有句话叫“求而不得,往往不求而得”。其实生活中,在我们遇到这样逻辑上并不复杂,但选择起来却无比困难的情况时,也不应该不要急于眼前的境况,不要因为一时的感动或是长辈的催促,就潦草的将自己托付给他人。
是妥协,还是等待?没人能给出固定的答案,或者说,每个人心底都有一个答案,即使不是你心目中最好的。
懂得等待,宁缺毋滥,才是最好的选择标准。hold住自己的情感,多珍惜身边的人,当你在执着的追求你的男神/女神却苦苦无终,陷入单恋的郁郁寡欢时,
等等看,也许你真正的另一半,互相爱慕的另一半,就在不远的未来静静地等待着你
等等看,也许这段等待并不会漫长,当你进化成更好的人,樱花坠落的一瞬,这个人就会出现


参考文章:

[Algorithm] Deferred Acceptance Algorithm

Discrete Mathematics & Applications, Kenneth H.Rosen. 7th edition

  • 1
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
程序员必经之路! 【限时优惠】 现在下单,还享四重好礼 1、教学课件免费下载 2、课程案例代码免费下载 3、专属VIP学员群免费答疑 4、下单还送800元编程大礼包 【超实用课程内容】  根据《2019-2020年中国开发者调查报告》显示,超83%开发者都在使用MySQL数据库。使用量大同时,掌握MySQL早已是运维、DBA必备技能,甚至部分IT开发岗位也要求对数据库使用和原理有深入了解和掌握。 学习编程,你可能会犹豫选择 C++ 还是 Java;入门数据科学,你可能会纠结于选择 Python 还是 R;但无论如何, MySQL 都是 IT 从业人员不可或缺技能!   套餐中共包含2门MySQL数据库必学核心课程(共98课时)   课程1《MySQL数据库从入门到实战应用》   课程2《高性能MySQL实战课》   【哪些人适合学习这门课程?】  1)平时只接触了语言基础,并未学习任何数据库知识人;  2)对MySQL掌握程度薄弱人,课程可以你更好发挥MySQL最佳性能; 3)想修炼更好MySQL内功,工作中遇到高并发场景可以游刃有余; 4)被面试官打破沙锅问到底问题问到怀疑人生应聘者。 【课程主要讲哪些内容?】 课程《MySQL数据库从入门到实战应用》 主要从基础篇,SQL语言篇、MySQL进阶篇三个角度展开讲解,帮助大家更加高效管理MySQL数据库。 课程二《高性能MySQL实战课》主要从高可用篇、MySQL8.0新特性篇,性能优化篇,面试篇四个角度展开讲解,帮助大家发挥MySQL最佳性能优化方法,掌握如何处理海量业务数据和高并发请求 【你能收获到什么?】  1.基础再提高,针对MySQL核心知识点学透,用对; 2.能力再提高,日常工作中代码换新貌,不怕问题; 3.面试再加分,巴不得面试官打破沙锅问到底,竞争力MAX。 【课程如何观看?】  1、登录CSDN学院 APP 在我课程中进行学习; 2、移动端CSDN 学院APP(注意不是CSDN APP哦)  本课程为录播课,课程永久有效观看时长 【资料开放】 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化。  下载方式电脑登录课程观看页面,点击右侧课件,可进行课程资料打包下载。
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值