下面的问题来自姚期智教授的理论计算机的授课内容——我是其助教之一:

现假设你在PIE上征友,或者以其它方式,选定了某些约会对象,比如 n=20 个。约会当然得一个一个来,那么假设

  1. 可以将所有已约会的对象按优劣排序,但无法得知他们在所有的人里面的排名。在约会过程中,你知道某人是你目前已见到的最好的,但当时还不能确定是不是所有人里面最好的。

  2. 如果你在约会当时决定放弃某人,后面再没有机会和此人和好——好马不吃回头草。

  3. 选定意中人后,约会结束——骑驴找马是不道德的。

OK,现在目标当然是找到你心目中最喜欢的人。关系定得太早,会因为第2条假设——精彩的还在后头,定得太晚,会因为第3条——而后悔莫及。所以,什么策略才能让你以最大概率找到你最满意的那个人呢?

一个简单而且自然的方法是,待定 k ,与前 k 个人约会,不做任何选择。继续约会直到遇到比这前k个人还好的那个人为止。

通过概率计算得出,这个方法比我们想象中要好得多。通过选取合适的 k=n/e~0.37n~7,有接近40%的机会选中最好的那位,有几乎70%的机会选中最好或者次好的那位。

可以证明,上面的策略已经是最优的了。

这个问题在日常生活中有更多应用。比如你打算在30岁前结婚,现在20岁。那么在24岁前先别确定目标,24岁以后遇到比之前都好的就可以定下来。这几乎就是你能达到最好的结果了——假设你的候选人在这十年是均匀或者随机出现的。

这种策略也许能说明为何初恋成功率低?

以上所用都是爱情和婚姻的简化模型,没有考虑爱情中的主观因素。所以,请只把它当作一个脑力游戏。

下面将证明:最佳约会策略里提到策略,忽略前37%的对象,然后在剩下的对象里挑第一个比前37%都好的对象,这个策略是最优的。更准确地,我们将证明:任何约会策略的成功概率都不可能超过 un∑n−1i=u1i ,其中 u 为满足 ∑n−1i=u1i≥1 的最大值。这个 u 大约为37%,最后成功的概率大约为40%。

首先定义一些符号, ∏n 表示 {1,2,⋯,n} 的排列的集合。

我们可以定义排列之间的半有序关系。对于任何两个排列 α∈∏a 和 β∈∏b ,如果 a≤b 并且 α 的前a项的大小顺序和 β 一样(即对任意 1≤i,j≤a 都有 αi<αj⇔βi<βj ),我们则认为α≤β ,我们也可以用另外一种说法,满足这样的条件的 α 被认为是 β 的字排列。

对任意 α∈∏n ,令

Fk(α)=β∈∏ks. t.β≤α

下面开始证明。

随机策略是确定性策略的随机组合,所以任何一个随机策略的胜率都不会超过其中最好的确定性策略的胜率。所以我们只需要对确定性策略证明上述胜率上届。

而首先,我们需要对一个约会策略建模。任何一个策略面对一个约会对象的序列,这个序列可视作一个排列组合。策略一项一项检验这个排列组合,并且决定在什么时候停止。假设这个策略在检查 α 时停止在第 k 项,那么该策略只知道 α 的前 k 项的相对顺序,也就是Fk(α) ,便决定停止。令 Sk∈∏k 为所有这样的 Fk(α) ,并令sk=|Sk| 。我们也称S=S1∪S2∪⋯∪Sn 为策略的停止集。

显然,对于任意 α∈Sk , 都有 n!k! 个排列比它大。这其中,有 (n−1)!(k−1)! 个排列被策略成功找出最大值(即第 k 项为 n )。所以策略在第 k 项停止并成功的概率为:

P=1n!∑k(n−1)!(k−1)!⋅sk

从上面概率等式看,一个策略的停止集越大越好。现在我们需要指明一个事实,这是证明我们结论的关键。一个策略的停止集 S 并不能无限制的大,它必须满足其中的任意一个排列都不能是另外一个排列的字串,即对任意 i<j , α∈Si 且 β∈Sj , α 不可能是 β 的自排列。

如果同为停止集元素的排列 α 是另一个停止集元素 β 的子排列,那么当策略在遇到 β 时,策略将直接停止在第i 个元素,不会等到第 j 个元素才停止,从而 β 不可能也是停止集合的成员。

从上面的事实,我们计算 {1,2,⋯,i} 的最后一位为 i 的排列个数。任何一个属于 Sj 的排列都可以扩充为 (i−1)!j!个这样的排列,并且所有这些这样扩充后的排列都互不相同。因此:

∑j=1j−1sj(i−1)!j!+si≤(i−1)!

令 ti=si/i! ,上式转化为对任意 i

∑j=1i−1tj+iti≤1

令 u 为满足 ∑n−1i=u1i≥1 的最大值,以下有:

P==≤=1n∑k=1nktk1n∑i=1n(∑j=1i−1tj+iti)(1−∑j=in−11j)1n∑i=u+1n(1−∑j=in−11j)un∑i=un−11i

等号成立时必须有 ∀i≤u 都有 ti=0 ,亦即策略需忽略前 u 项,并且 ∀i>u 有∑i−1j=1tj+iti=1 ,递推可知最佳约会策略是唯一的最优的策略。

————

编辑 ∑Gemini

☞泰勒定理的奇闻轶事

☞丘成桐:漫谈微分几何

☞Leibniz 如何想出微积分?(一)

☞线性相关和秩的物理意义

☞数学史上你认为最丑陋的公式是什么?

☞陶哲轩谈什么是好的数学

☞田渊栋:数学的用处(下篇)

☞你绝对没想过原来数学家这么流氓,一言不合就进行暴力证明

☞世界上最牛的五篇博士论文

☞数学中有哪些巧合让人眼前一亮?

☞算法立功!清华毕业教授美国被抢车,警察无能为力自己用“贪心算法”找回

☞学术史上的奇文:怎样用数学抓狮子

☞台大教授的反思:最难的一课 我们却没教给学生

☞麻省理工学院(MIT)研究生学习指导—— 怎样做研究生

☞分享 数学,常识和运气 ——投资大师詹姆斯·西蒙斯2010年在MIT的讲座

算法数学之美微信公众号欢迎赐稿

稿件涉及数学、物理、算法、计算机、编程等相关领域,经采用我们将奉上稿酬。

投稿邮箱:math_alg@163.com

最佳约会策略及其证明相关推荐

  1. [大牛翻译系列]Hadoop(4)MapReduce 连接:选择最佳连接策略

    4.1.4 为你的数据选择最佳连接策略 已介绍的每个连接策略都有不同的优点和缺点.那么,怎么来判断哪个最适合待处理的数据? 图4.11给出了一个决策树.这个决策树是于论文<A Compariso ...

  2. 宋浩 概率统计 笔记_梅花生物的涨跌幅概率统计,及最佳网格策略

    作者:鞅祸遗民,来源优财助手投稿 远远妈写过一篇文章<长期投资年化收益率如何做到 10%+>,讲述了低风险股票买卖投资策略中短线买卖仓位套利模式: - 10% 的资金,用类似于网格或箱体交 ...

  3. 【用户运营】用这4个最佳客户服务策略,减少客户流失率

    关键词:客户服务.客户流失率.用户运营 根据你所处的行业,获取一个新客户的成本可能比保留一个现有客户的成本高25%. 这是有道理的:你可以花几周时间研究如何让新客户进入你的企业,并投入大量的时间和精力 ...

  4. 独家 | 四个提升数据管道的最佳软件工程策略

    文:Olivia Iannone 翻译:陈之炎 校对:zrx 本文约3400字,建议阅读7分钟 从敏捷到抽象,以思考软件的方式来思考如何从数据带来的诸多痛苦中解脱出来. 图片来源:Headway , ...

  5. 初创公司MongoDB最佳实践策略和躲坑秘笈

    极牛技术实践分享活动 极牛技术实践分享系列活动是极联合顶级VC.技术专家,为企业.技术人提供的一种系统的线上技术分享活动. 每期不同的技术主题,和行业专家深度探讨,专注解决技术实践难点,推动技术创新, ...

  6. win10提示“你的设备已过期”的的最佳解决策略和方法

    Win10系统频繁更新,很多同学不胜其烦,想尽各种办法关闭windows更新服务,但是引起的问题也随之而来,其中最主要的问题是提示"你的设备已过期,并缺少重要的安全和质量更新,因此存在风险. ...

  7. 别盲目调参!深度学习要先找到最佳策略

    [AI科技大本营导读]R2RT 是一个很有特色的机器学习/人工智能技术博客,作者是一个在 Github 上用户名为 spitis 的机器学习.人工智能专家.这位真名不知为何的专家,目光深邃,擅长对于一 ...

  8. 强化学习(九)- 策略梯度方法 - 梯度上升,黑箱优化,REINFORCE算法及CartPole实例

    策略梯度方法 引言 9.1 策略近似和其优势 9.2 策略梯度定理 9.2.1 梯度上升和黑箱优化 9.2.2 策略梯度定理的证明 9.3 REINFORCE:蒙特卡洛策略梯度 9.3.1 轨迹上的R ...

  9. 策略梯度搜索:不使用搜索树的在线规划和专家迭代 | 技术头条

    作者 | Thomas Anthony.Robert Nishihara.Philipp Moritz. Tim Salimans.John Schulman 译者 | 李倩 编辑 | Rachel. ...

最新文章

  1. 顺序表-插入一个元素x后保持该顺序表L递增有序排序(查找+元素后移插入)
  2. 基于S3C2440A+SDRAM(K4M51163)
  3. matlab 连续显示,请教下MATLAB一个问题啊 我想检测一行数据里面出现连续出现0的次数,...
  4. foobar2000 ios版怎么添加音乐_抖音怎么设置说完话后再放音乐 视频先配音后半段添加背景音乐...
  5. 肤色检测算法 - 基于二次多项式混合模型的肤色检测
  6. Insightface项目爬坑指南+使用本地数据集训练流程(MXNET版)
  7. 微信 小程序组件 分页传参
  8. java 枚举_Java中的枚举类型(Enum)详解
  9. Android系统架构图
  10. 服务器磁盘扩展容量操作流程
  11. java 课后习题 冒泡排序的运用
  12. 【连载】如何掌握openGauss数据库核心技术?秘诀三:拿捏存储技术(7)
  13. 鸿蒙系统怎么还不能用,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可 !【手机吧】_百度贴吧...
  14. 哔哩哔哩Java学习视频
  15. C-COT代码运行----Matlab2018a运行matconvnet深度卷积网络
  16. c 语言图片转字符画,图片转化为字符画(C#版)
  17. Java习题练习:杨辉三角
  18. java基础猜拳游戏
  19. 阴阳师双拉条怎么不被超车
  20. Quartus Prime官方下载方法

热门文章

  1. ftp服务器需要什么系统,ftp服务器需要什么系统
  2. 哪些是Linux内核的同步机制,Linux内核的同步机制(1)
  3. cscript 执行代码_WSCRIPT与CScript区别
  4. 3 运行时间太长_10大污水处理预处理系统动态图及运行管理、故障处理
  5. 微云存照片会变模糊吗_手机自带微云台防抖,VivoX50系列不一般
  6. python合并路径和文件名_Python实例 分割路径和文件名
  7. java 耦合度_Java第三十八天,Spring框架系列,使用工厂模式降低程序耦合度
  8. [Cordova]JS和Native交互实现关键代码(iOS)
  9. 甘肃计算机教室中标,大单纷至沓来 甘肃百亿工程浪潮电脑中标8000台
  10. php怎么上传函数,php上传函数怎么封装