[Algorithm] Deferred Acceptance Algorithm

约会配对问题

一.立即接受算法

对于约会的配对,大家都去追自己最心仪的女生。而这个女生面对几位追求者,要立刻做个决定

被拒绝的男生们调整一下心情,再去追求心中的 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男两人都更愿意离开自己的现任伴侣而彼此在一起。

这种不稳定的状态就是很多文学影视作品的来源哈。在数学上,这也恰恰被称为是“不稳定”的组合。顾名思义,我们希望能够有种算法,给我们的结果是所有配对都是稳定的。

 


 

二.延迟接受算法

延迟接受算法的操作:每个男生在第一轮中向自己心中的No.1示爱。但是各位姑娘们不用立即决定,而是先hold住了。

在第二轮中,每个男生再向心中的No.2示爱。从第二轮开始,每位姑娘们只保留自己到现在为止所收获的最心仪的男生(但是不用答应他,只hold在心理),而拒绝其他所有人。

而被拒绝的男生(也就是现在尚没有人hold着你的男生)则继续在下一轮中向心中排名的下一个姑娘表白。

以此类推,一轮轮继续下去,直到所有想示爱的男生都示完为止。此时,每个手中有offer的姑娘,可以选择接受。

  (感觉就是先让女生获得完全信息)

 

以上就是立即接受算法的做法。大家算一下,就会发现,在我们这个简单的例子中,最后的结果是x-A,y-B,z-C三组恋人终成眷侣。而这是一稳定的结果。

所有6人中,你不可能找到一男一女符合以下条件:他们都更愿意抛弃已有的伴侣而与彼此在一起。

延迟接受算法能够从数学上证明是一定会产生稳定配对的算法。这使它成为一个重要的工具,因为这类的配对问题在现实生活中太常见了。罗斯在《共享经济》中介绍了他将延迟接受算法分别运用于肾脏移植市场,全国住院医生配对程市场和高中择校系统,实现了稳定的配对,取得了非常好的成果。

 


 

 

Nice. 

posted @ 2016-10-28 17:06  郝壹贰叁  阅读(2555)  评论(0编辑  收藏  举报