前言

这是一篇算法文章。

正文

今天和老婆去领证,有所感想,你的老婆(老公)是你的初恋的概率有多大

这个还挺难分析的,幸好在《算法导论》一书中找出了参考答案。

在《算法导论》第五章有一个名为「雇佣问题」的案例,它是这样描述的:

你是一个老板,向猎头公司委托寻找一个秘书职位,猎头每天为你推荐一个应聘者,而你对他进行面试。你的目标是,任用所有应骋者中资质最好的。但由于秘书职位不能空缺,在每次面试完后,都要立即给面试者结果,所以只要当天的面试者资质比现任秘书好,你就解雇现任的秘书,而重新雇佣当天的应骋者。当然,每次确定雇佣时你都要立马支付秘书一笔雇佣费用,解雇时费用不返还。

举个例子,比如有十个人来面试,他们的能力依次为

10 9 8 7 6 5 4 3 2 1

你会发现你找的秘书一届不如一届,只需要支付 1 个单位的费用就行了,这是最省钱的情况。

再举个例子,还是有十个人来面试,他们的能力依次为

1 2 3 4 5 6 7 8 9 10

由于后者的能力都比前者强,意味着你每次面试完都会解雇之前的秘书,然后马上雇佣当天的秘书,支出的费用为 10 个单位。

当然,这是最好和最差的情况,用我们小学二年级就学会的阶乘知识,出现这种情况的概率为 1/10! 。

所以我们需要计算的是一个期望值,根据《算法导论》给出的答案为 lnN,也就是说,如果有十个人来面试,理论上的支付费用为 2.3 个单位。

上面举的例子你应该可以轻松的理解,所以《算法导论》马上增加了难度:

不不不,我们小公司并不需要最好的秘书,时间也比较赶,只需要比较好的秘书就行啦,我想要省钱。

恩恩,你只想要支付尽可能少的雇佣费用

这个情况就和苏格拉底麦穗的故事一样。

传说古希腊哲学大师苏格拉底的3个弟子曾求教老师,怎样才能找到理想的伴侣。于是苏格拉底带领弟子们来到一片麦田,让他们每人在麦田中选摘一支最大的麦穗——不能走回头路,且只能摘一支。

都是只给你一次选择的机会,你需要怎么样把握?

答案是先观察前面的 K 个秘书,记录下最好秘书的序号,假设为 A,然后继续面试接下来的秘书们,如果后面出现了比 A 更好的秘书,假设为 B,则雇佣 B,停止面试;如果后面的秘书都不如 A,则雇佣 A,停止面试。

K 是多少呢?

《算法导论》经过一系列的数学推导,得出的数值为 n/e。其中 e 为自然对数。

吴师兄领证之前谈了多少个女朋友?_java

如果参加面试的秘书数量为 100, K = 100 / 2.7 = 37 ,也就是说你需要走马观花的面试这 37 个人,先都委婉的拒绝掉,在后面的面试者里面如果有比 37 人中最好的那个还要好,马上发 offer,如果剩下的 63 人都是渣渣,好马吃回头草,雇佣 37 人中的优秀者。

将这个理论简单粗暴的应用到恋爱婚姻上,挺变态的,做个渣男,前几次只恋爱不结婚,后面遇到比前面更好的马上结婚,这样遇到最合适的人概率最大。

这个结论从反面证明了,从初恋走到结婚的概率有多低,如果你的结婚对象是你的初恋,真的很不容易呀。

那吴师兄领证之前谈了多少个女朋友嘞,我们都是彼此的初恋。

参考阅读:

https://www.zhihu.com/question/332614001/answer/735606441

https://zhuanlan.zhihu.com/p/79865519

https://zhuanlan.zhihu.com/p/70498214




你似乎也发现,「五分钟学算法」这几天都是原创,是的,2021 年开始,程序员吴师兄会每天更新一篇原创文章,包括但不限于算法、数据结构、编程、程序人生等内容,如果哪天觉得写得内容不错,烦请点个赞;如果哪天觉得内容不喜欢,可以隔几天再来看;如果哪天没有更新原创,会发个比较可观的红包。

今天是持续写作第 6 / 100 天。

今天是持续跑步第 2 / 100 天。

如果你有想交流的话题,欢迎留言。