约会配对问题

一.立即接受算法

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

被拒绝的男生们调整一下心情,再去追求心中的 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.

[Math] Deferred Acceptance Algorithm的更多相关文章

  1. [Algorithm] Deferred Acceptance Algorithm

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

  2. [algorithm] My rookie plan to start

    若干年后,经验有一些,但根基不牢靠.[algorithm] series 借助学习Standard Template Library: Algorithms的这段时期,在自己的算法和c++基础方面加些 ...

  3. 本人AI知识体系导航 - AI menu

    Relevant Readable Links Name Interesting topic Comment Edwin Chen 非参贝叶斯   徐亦达老板 Dirichlet Process 学习 ...

  4. [Code] 烧脑之算法模型

    把博客的算法过一遍,我的天呐多得很,爱咋咋地! 未来可考虑下博弈算法. 基本的编程陷阱:[c++] 面试题之犄角旮旯 第壹章[有必要添加Python] 基本的算法思想:[Algorithm] 面试题之 ...

  5. BestCoder Round #70 Jam's math problem(hdu 5615)

    Problem Description Jam has a math problem. He just learned factorization. He is trying to factorize ...

  6. hdu 5615 Jam's math problem(判断是否能合并多项式)

    方法一:由十字相乘相关理论我们能知道,如果要有p,k,q,m,那么首先要有解,所以b*b-4*a*c要>0,然而因为p,k,q,m是正整数,所以代表x1,x2都是有理数,有理数是什么鬼呢?就是解 ...

  7. hdu 5595 GTW likes math(暴力枚举查询)

    思路:直接暴力枚举区间[l,r]的整数值,然后max和min就可以了. AC代码: #pragma comment(linker, "/STACK:1024000000,1024000000 ...

  8. Boost 1.61.0 Library Documentation

    http://www.boost.org/doc/libs/1_61_0/ Boost 1.61.0 Library Documentation Accumulators Framework for ...

  9. iOS苹果官方Demo合集

    Mirror of Apple’s iOS samples This repository mirrors Apple’s iOS samples. Name Topic Framework Desc ...

随机推荐

  1. python一个简单的登录

    文件目录下有两个文件 user_name.txt lock_file.txt 实际中可以读数据库里的信息 代码如下 #encoding = utf-8 import sys user_file = ' ...

  2. 在Flex (Flash)中嵌入HTML 代码或页面—Flex IFrame

    在flex组件中嵌入html代码,可以利用flex iframe.这个在很多时候会用到的,有时候flex必须得这样做,如果你不这样做还真不行-- flex而且可以和html进行JavaScript交互 ...

  3. Lucene 4.X 倒排索引原理与实现: (1) 词典的设计

    词典的格式设计 词典中所保存的信息主要是三部分: Term字符串 Term的统计信息,比如文档频率(Document Frequency) 倒排表的位置信息 其中Term字符串如何保存是一个很大的问题 ...

  4. YChaos生成混沌图像

    YChaos是一款通过数学公式生成混沌图像的软件,展示混沌之美,数学之美.软件中定义一套简易的脚本语言,用于描述数学表达式.使用时需要先要将数学表达式写成该脚本的形式,解析脚本代码以生成相应的图形与图 ...

  5. View 以Diaglog 方式展示

    OutAdmissionBookingEditor admissionBookingEditor = this.LayoutManager.OpenDialog<OutAdmissionBook ...

  6. Win7版IE10浏览器正式版官方下载地址

    • 简体中文,Win7 SP1 32位版IE10下载: http://download.microsoft.com/download/4/1/4/4149BFB1-AC27-401D-943F-DA1 ...

  7. C#-DataTable分页代码

    /// <summary> /// DataTable分页并取出指定页码的数据 /// </summary> /// <param name="dtAll&qu ...

  8. 阅读《Effective C++》系列

    <Effective C++>条款07:为多态基类声明virtual析构函数 这样做主要是为了防止内存泄漏,见我hexo博客. C++的虚析构函数 <Effective C++> ...

  9. 一种线程安全的handle

    对象引用的正确性在多线程环境下是一个复杂的问题,请参考,处理由引用计数引起的泄漏.简单来说,我们应该尽量减少使用强引用,否则将有可能产生[处理由引用计数引起的泄漏]一文中描述的难以察觉的内存泄漏问题. ...

  10. post 的body json要使用双引号,而不是单引号

      string parse error , JS eval error {'name' : 'wade' }   http://json.parser.online.fr/ string parse ...