我的机器学习教程「美团」算法工程师带你入门机器学习 以及 「三分钟系列」数据结构与算法 已经开始更新了,欢迎大家订阅~这篇专栏整合了这几年的算法知识,简单易懂,也将是我实体书的BLOG版。
欢迎大家扫码关注微信公众号「图灵的猫」,除了有更多AI、算法、Python相关文章分享,还有免费的SSR节点和外网学习资料。其他平台(微信/知乎/B站)也是同名「图灵的猫」,不要迷路哦~
数学与算法告诉我们,有情人必将终成眷属,只是缺少方法
看过《非诚勿扰》的同学一定还记得节目中的相亲模式,当男嘉宾入场后会首先选择最喜欢的心动女生,然后在几轮“面试”后由最后亮灯的女生,也就是心仪男嘉宾的女生与男嘉宾一开始选择的心动女生做比较。结果有三种可能性:
有趣的是,有时候,留灯的女生即便是男嘉宾不喜欢的类型,很多时候也会被牵手,而也有女嘉宾在台上站了很多期节目,被优质的人翻号,却没有被所带走,到最后反而被一些很普通的男生牵手成功。
现在,考虑将上述过程的选择次数增加至多次,并允许与女嘉宾人数(假设为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