波斯公主选驸马: 关于算法和重大决策

大学时的一道数学题

我大学的专业是数学。有一次,教授给出了《波斯公主选驸马》题「1」,例如以下:


波斯公主到了适婚年龄,要选驸马。候选男子100名,都是公主没有见过的。百人以随机顺序,从公主面前逐一经过。每当一位男子在公主面前经过时,公主要么选他为驸马,要么不选。假设选他,其余那些还没有登场的男子就都遣散回家,选驸马的活动也 over 了。假设不选,当下这名男子就离开,也就是 pass 掉此人,下一人登场。被pass 掉的,公主不能够反悔再从选。规则是,公主必须在这百人中选出一人做驸马,也就是说,假设前99人公主都看不中的话,她必须选择第100名男子为驸马,无论他有多么丑陋。


任务是,给公主设计选择方法,让她有最高概率选到百人中最英俊的男子为驸马。


说明一点是,没有不论什么选择方法可以保证公主一定选择到最帅的帅哥。对于不论什么选择方法,总存在某些出场的顺序,让公主与帅哥错过。所以,题目所问的,不是必胜的选法(由于不存在),而是概率最高的选法。


由于并非要讨论数学,我这里就直接给出答案了:最佳选法是 pass 掉最開始的 100/e 名男子(e = 2.718… 是自然对数,即 100/e 约等于 37)。可是记录下这 37 名男子中最英俊者。之后鱼贯而来的男子中,出现的第一位英俊程度超越全部前 37 人者,即为驸马。假设人都走光了,也没出现这么一位 Mr. Right,那么就仅仅好选择第 100 位男子。


这个最佳选法,后面有非常有意思的数学推导。感兴趣的话,可见注「2」。



正解后面的思考方法

数学的推论且不论,这个答案背后是一个可为广泛应用的思考方法。公主选择的难处在于她不知道这百人的英俊程度是如何分布的,是在如何一个范围内。所以她最佳的策略是,pass 掉最初 37 位男子,可是把他们看成一个有代表性的 sample,从而了解这百人相貌的大致分布。然后在这个认知的基础上进行选择。


真实的谈情说爱当然不是一个简单的选美。普通人也不能像波斯贵族那样要谁有谁。可是思维方法共通。假如你是一位女生,第一次恋爱的时候,或许你认为男朋友不够细腻,不解风情。但你无法推断的是,是否天下男生大多如此,还是你特别倒霉碰到这种极品「3」。你唯有试过三个五个后,才可以对男性这个物种有个全局的推断。所以,当你和第一任男朋友分手后,大可不必悲天悯人,亦或对天下男人失望。正确的态度是:okay,我如今有一个 data point, 如今我来找些很多其它的 data points「4」。


花多长时间学习?

找到多少 data points 才够呢?换句话说我们学习到什么时候才可以信任自己对世界的推断?下面这个小故事中,我们可以看出大自然是怎么解决问题的。


1944年冬天,二战进入尾声。德国人封锁了荷兰德占区的补给。1944-1945年的冬天,被称为”hunger winter”(饥饿的冬天)。有四百五十万荷兰人遭受饥饿,一万八千人饿死。1945年,德国战败,封锁也随之解除。


但这个饥饿冬天所带来的影响却一直留存到几十年后。那些封锁期间怀着孩子的妇女,她们肚子里发育中的胚胎,虽无知觉,也经历了这场灾难。几十年后,当这些孩子成为50岁的中年人,科学家们发现他们会比之前,或者之后出生的荷兰孩子都更肥胖,更easy有心血管疾病「5」。


对此的一种解释是,还在妈妈肚子里的时候,我们的身体就在学习这是如何一个世界:是个食物充足,衣食无忧的世界?还是一个有上顿没下顿的世界?这些荷兰饥荒那年出生的婴儿,他们的身体学习到:“这是一个食物匮乏的世界”。哪怕他们成年之后,荷兰已经是一个富余的发达国家,他们的身体还是不忘早年饥饿的经历,会尽力存储脂肪,准备着下一个饥饿冬天的到来。结果就是这个人群更easy肥胖,而且更easy患有与肥胖相关的心血管疾病。


有意思的是,对食物丰富与否的学习,在10月怀胎中完毕,竟然之后几十年也无法扭转。这个学习的窗体,是我们的身体,我们的基因所决定的。孩子学东西快,是由于他们的身体和大脑就是 specialized 学习机器。有研究说,人脑中负责抽象思维的前额叶在25岁才定型「6」。换句话说,25岁曾经,我们的思维,特别是那些高级的认知能力,还在不断变化着。而这当中非常多的变化,就来自我们的环境。这样的变化,就是我们在学习我们所在的,究竟是如何一个世界;如何的思维和行为,是在这个世界上行得通的。


从人脑的发育看来,过了25岁,至少从生理上来说,这样的学习就停止了。这个 deadline 取决于基因,而基因来源于千百万年的进化。千百万年中,人类的平均寿命是徘徊在20-30岁。这可能就是为什么我们的学习,从我们身体的设计上看来,是在25岁就截止了。


我们无法影响自己生理、身体上的学习,可是有些事情的学习,却是我们能够影响的,并且应该去影响的。选择如何的工作?居住在哪个城市?找什么样的伴侣?这些似乎不是应该匆匆忙忙,赶着一个deadline (特别是25岁的 deadline)去决定的事情。你会进行非常多比較,才决定购买一辆汽车或者房子。而工作、伴侣,这些更重要的决定,你当然要很多其它比較比較,了解一下你是在如何的一个世界里,才做决定。


或许你30岁了,没有婚配的对象,不喜欢正在做的工作,但有种种压力期待你“别折腾,安顿下来”。这压力可能来自于一个一直不给个人选择的社会传统,或者来自于一个预期寿命仅仅有30岁的进化压力。可是这一切都变了:社会已经有越来越多的选择余地,我们也能够预料之中的活到80,90岁。


或许你要认真考虑一下波斯公主的问题:我是否应该继续收集 data points?还是已经到了要做终生决定的时候?



回到波斯公主的题目

波斯公主的题目至少还教了我们还有一点,就是哪怕你的方法是最优,你也永远不可能是每次都得到最英俊的驸马。在最优化的选择方法下,公主也仅仅有 40% 左右的可能性选择到最帅的男人「7」。就是说,假设这样选择十次,每次这百名男子以随机顺序出现,当中有6次,公主都会选到不是最帅的驸马。


生活就是有风险的,不可測的。这似乎是个打击,但也是一种释怀。尽人事,安天命。假设你依照一个正确的方法去做了,哪怕结果差强人意,这也并非你的错。


我学会的还有一点是,假设我是作为被选的一方(就像那100名男子),timing 是至关重要的。下面是一个简单的多的题目:

假设你是这百名男子中的一名,而且你可以决定自己出场的名次,你会选择在什么时候出场,以最大提高自己被选的概率?


答案是第 38 名。你不会选择在 38 名之前,由于你被选的概率是零(如果我们的公主学过高等数学,知道最佳选法)。你也不会选择后于38,由于你前面每多一个人,就意味着多了一分公主选上他的机会「8」。


假设你有一位意中人,你当然要努力去追求幸福,但你可能也要想一下,这是否是最好的 timing?


37% 法则“实測”!

37% 法则的效果到底怎样呢?我们在计算机上编敲代码模拟了当 n = 30 时利用 37% 法则进行选择的过程(假设 MM 始终未接受求爱者,则自己主动选择最后一名求爱者)。编号越小的男生越次,编号为 30 的男生则表示最佳选择。程序执行 10000 次之后,居然有大约 4000 次选中最佳男生,可见 37% 法则确实有效啊。

计算机模拟 10000 次后得到的结果

这个问题由数学家 Merrill M. Flood 在 1949 首次提出,这个问题被他取名为“未婚妻问题”。这个问题的精妙之处在于,在微积分界叱咤风云的自然底数 e,竟也出人意料地出如今了这个看似与它毫不相关的问题中。不知道此问题发表后,Geek 男女间会不会多了一种分手的理由:不好意思,你是那 37% 的人⋯⋯


注:

「1」原题是波斯王子选妃。

「2」这个题目在科学的松鼠会上。

「3」我如今就能够做个解答:天下男生的确大多如此,可是经过训练,能够有所改进。

「4」这样的方法,也就是 Bayesien 统计学的核心:依据信息的不断丰富而修正对世界的认知。

「5」“Effects of prenatal exposure to the Dutch famine on adult disease in later life: an overview”, T.J. Roseboom et al., Molecular and Celular Endocrinology, vol 185 20 Dec 2001, Pages 93-98

「6」“Why do they act that way?: a survival guide to the adolescent brain for you and your teen”, David Walsh. New York: Free Press, 2004.

「7」这个40% 左右的数字,是能够推导出来的。但也能够通过模拟估算。详见科学松鼠会文:http://songshuhui.net/archives/57722

「8」谢谢楼下 zhongyu wang 的提醒。第100名也是好位置,即假设最帅的锅出如今前37名中,那么公主必然会选第100名。所以,第100的位置至少是会有37%的概率被选中。这可能是比第38还好的位置!转换成对异性的追求,不知是否意味着,你要等到你的爱慕对象穷途末路的时候再现身:)


怎样求出最优的 k 值?

大数学家欧拉对一个神奇的数学常数 e ≈ 2.718 深有研究,这个数字和“拒人问题”居然有着直接的联系。


对于某个固定的 k,假设最适合的人出如今了第 i 个位置(k < i ≤ n),要想让他有幸正好被 MM 选中,就必须得满足前 i-1 个人中的最好的人在前 k 个人里,这有 k/(i-1) 的可能。考虑全部可能的 i,我们便得到了试探前 k 个男生之后能选中最佳男生的总概率 P(k):


用 x 来表示 k/n 的值,而且如果 n 充分大,则上述公式能够写成:


对 -x · ln x 求导,并令这个导数为 0,能够解出 x 的最优值,它就是欧拉研究的神奇常数的倒数—— 1/e !


也就是说,如果你估计求爱者有 n 个人,你应该先拒绝掉前 n/e 个人,静候下一个比这些人都好的人。如果你一共会遇到大概 30 个求爱者,就应该拒绝掉前 30/e ≈ 30/2.718 ≈ 11 个求爱者,然后从第 12 个求爱者開始,一旦发现比前面 11 个求爱者都好的人,就果断接受他。因为 1/e 大约等于 37%,因此这条爱情大法也叫做 37% 法则。


只是,37% 法则有一个小问题:假设最佳人选本来就在这 37% 的人里面,错过这 37% 的人之后,她就再也碰不上更好的了。但在游戏过程中,她并不知道最佳人选已经被拒,因此她会一直痴痴地等待。也就是说,MM 将会有 37% 的概率“失败退场”,或者以被迫选择最后一名求爱者的结局而告终。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值