五个囚犯先后从100颗绿豆中抓绿豆。抓得最多和最少的人将被处死,不能交流,可以摸出剩下绿豆的数量,谁的存活几率最大?

提示:1、他们都是很聪明的人;2、他们的原则是先求保命,再去多杀人;3、100颗不必都分完,但要保证每人至少抓一颗;4、若有重复的情况,则也算最大和最小,一并处死。

这个算法题是在网上看到的,觉得很有趣,而且很多数学分析师做了很多分析见解,看完之后,觉得很有魅力。所以总结一下:


曾加的见解:

这道题怎么做,取决于我们如何从数学的角度理解题干中这句话:
“他们的原则是先求保命,再去多杀人”。

我的理解是:
  1. 每个人采取方案,使得剩下的人在采取最佳方案的时候,自己的存活概率最大;
  2. 如果有多种方案使得自己的存活概率最大且相同,则采取杀死人最多的方案;

假设我的理解正确,那么, 这道题将会有一个可怕的答案。

定义:
m_{n} 为第 n 个人取走的绿豆数,而 M_{n} 为前 n 个人取走的总绿豆数


引理 1
n 个人 ( 1\leq n\leq 3) 取过绿豆时,如果被取走的绿豆数满足
20n<M_{n}<95+n
则第 n+1 个人应该取 m_{n+1} =\min\left( 96-M_{n}+n,\left[ \frac{M_{n}-1 }{n}  \right]   \right) 颗绿豆’

证明:

这个方案,可以确保自己不死,同时剩下未取豆子的人死亡概率最大。

其中:
  • 96-M_{n}+n 是确保剩下的人至少有一颗绿豆可选,且自己至少取了 2 颗;
  • \left[ \frac{M_{n}-1 }{n}  \right]   是确保自己取的绿豆数至少比前面取的最多的人少 1 ;

由于 M_{n}>20n, 有 \left[ \frac{M_{n}-1 }{n}  \right]  \geq 20, 这不仅保证了自己取的豆子数不是最多的,并且其他人不可能都取到那么多,所以自己必然存活;

  • 如果 \left[ \frac{M_{n}-1 }{n}  \right]  < 96-M_{n}-n,他在确保自己存活的情况下,使得剩下的豆子数最少,这样可以杀更多的人;
  • 如果 \left[ \frac{M_{n}-1 }{n}  \right]  \geq  96-M_{n}-n,他在确保自己存活的情况下,剩下的人每个人只能取 1 颗豆子,确保杀死剩下的所有人;

推论1:如果第 1 个人想要存活,那么他取的豆子数不能超过 20 颗,否则,后面的人只要采取引理1 的方案,将保证自己存活,且此时第 1 个人会因为取的绿豆数最多而死亡,而最后 1~3 个人(根据第 1 个人取的绿豆数)会因为自己取的豆子数最少而死亡;


引理 2:当 n=2,3时,若 M_{n}\leq 20n
则第 n+1 个人应该取 m_{n+1} =\left[ \frac{M_{n}}{n}+0.5\right] 颗绿豆’来确保自己的存活概率最高

(其中, \left[ \frac{M_{n}}{n}+0.5\right] 是均值的四舍五入)

因为当且仅当在这种情况下,只要前面的人取的绿豆数的最大最小值之差不小于 2,自己就确保能存活(否则存活范围会变窄)

* 对于第 5 个人,这个条件可能不成立,比如见到前面四个人取了 62 颗, 可能是 14+16+16+16,也可能是 15+15+15+17,所以他无论取 15 颗还是 16 颗都有机会但不能确保自己存活。

而所有人取绿豆的最大最小值的差不大于 1,所有人都得死;

引理3: 当大家都极度自私的情况下,前 2 个人没有存活的可能

这是因为由引理2,如果第 3~5 个人都会采取对他们而言存活概率的方案,如果第 2 个人和第 1 个人取的绿豆数差超过 1 个,那前两个人就包揽了最大最小值,必须死,如果差不超过1,则所有人都得死;

既然第 1 个人没有存活概率,那他的目标就很耐人寻味了:

如果自己没有存活概率——
选择1:杀死尽可能多的人
选择2:尽可能拯救更多的人


按照我的假设,应该是前者。

既然第 1 个人没有存活概率,不妨让大家都死得干净些—— 取走 96 颗绿豆!

但如果,第 1 个人有点恻隐之心,做出了选择 2:

那,他会取走 21~33 的豆子数,根据 引理1, 第 2~4 个人会存活;

所以,本题根据对题意的不同理解,有两解:
  • 所有人都死亡;
  • 第 2~4 个人存活;

而对于第 1 个囚犯,他将面临一个哲学难题:
如果自己不可能活下去,你会选择让别人陪葬,还是让其他人好好活下去?

如果是你,会怎么选择呢?



------------------------------------------------------------------分割线-----------------------------------------

王霄池的见解:


在大家开始看答案之前,我必须指出:因为题目中没有“每个人都知道其他人也很聪明”这个条件,所以, 不会出现A选96颗豆子这种情形

下面是分析:

假设有3个人ABC,10个豆子,其他条件不变。

一开始B是非常紧张的,他开始了思考。

对他来讲,有上中下三种策略
  1. 上策:自己活着
  2. 中策:全部死光光
  3. 下策:自己死了,但有其他人活着。
然后他就开始预测A的行为:
  1. A如果拿8颗豆子,B拿1颗豆子,C拿1颗豆子。全死。
  2. A如果拿7颗豆子,现在轮到B做选择了
    1. B如果拿1颗豆子,C不敢拿1颗,必然拿2颗。C独活。
    2. B如果拿2颗豆子,C只能拿1颗,B独活。
    3. 因为B是个理性人,B这个小婊砸一定会拿2颗。AC死了。
  3. A如果拿6颗,B就拿3颗;A如果拿5颗,B就拿4颗。都是B独活,AC死。(我真的不是在黑A站)
  4. B已经找到了规律,那就是,让自己拿的数量在AC之间,就可以保证活。想到此处,他不由得笑出声来。A冷冷的看了他一眼。
  5. A如果拿4颗,现在轮到B做选择了。
    1. 如果B拿5颗,C只能拿1颗,A独活,BC死。
    2. 如果B拿4颗,C不论拿几颗,都是三人同死。
    3. 如果B拿3颗,C在得知前两人共拿7颗的情况下,选择拿3颗,三人同归于尽。
    4. 如果B拿2颗或1颗,C会选择拿3颗,C独活。AB死。
    5. B惊奇的发现,不管怎么选,自己都会死。他是不会选择让C这个小婊砸活着的。
    6. 于是B选择了拿3颗。
  6. A如果拿3颗,B略微思索了一下,也会选择三个人同归于尽。
  7. A如果拿2颗,B会拿3颗,但是C哈哈一笑(C已经习惯了在B的脑洞中死亡),他不拿5颗,也不拿4颗,也不会拿1颗,他拿了3颗。三人同归于尽。
  8. A如果拿一颗,那么(感谢 @胡昌俊 指正)
    1. B选1颗,3人同死
    2. B选2颗,CC会选择三人同归于尽。
    3. B选3颗或以上,C选AB的平均数。AC活,但B死,所以B不会做这个选择。
但是A也思考了上述的全部过程,A悲催的发现。如果B很聪明,不管自己怎么选,都是个死(对,你去上面仔细看看,我们已经列举了所有的情况)。既然这样,A把希望寄托在B不是很聪明上面,他微微一笑,选了4颗豆子。

ABC卒。

我们归纳出一个定理: 如果3个人有n个豆子,n\gg 3,且A不知道B和C是不是理性的,他可以选择[n/3],如果ABC三人都是理性的,他们会同归于尽。

时光荏苒,有个变态又抓到了4个人,ABCD,然后给了他们20颗豆子。
我们继续从如果A拿20颗豆子开始分析。啊,不,还是直接写结论吧。
  1. 当A选择17个时,同归于尽。
  2. 当A选择16到6个时,B活着。A死。
  3. 当A选择5时,B选4,C选4,D选择4和大家同归于尽。
  4. 当A选择4时,B选5,C选4,D选择4和大家同归于尽。
  5. 。。。
  6. A发现自己必死。于是他拿了5颗豆子,他寄希望于其他人高尚一些。
  7. ABCD卒。
转眼到了2015年,题主抓住了5个人,给了他们100颗豆子。第一个人深吸一口烟,吐出个烟圈, 他拿了20个

====程序员的分割线===

后来我又写了个程序,模拟了如下状况:
假设所有人都假设其他人的选择是随机的(可能是因为每个人都假设其他人可能是聪明人,笨的人,高尚的人,自私的人,抑郁症患者等),那么在所有的样本空间里(75287520种可能性),做出最有利于自己的选择:
100 left for A
A will chose 10
90 left for B
B will chose 11
79 left for C
C will chose 11
68 left for D
D will chose 10
58 left for E
E will chose 10

----------------------------------------------------------分割线--------------------------------------------------
王路的说法:

此题还有逻辑上的简便方法。以及,数学之外的思考。


(看我的答案前,最好先看过其他大牛的数学解答。才不至于对例子陌生。)


题干有个条件:“不能交流”。由于假定每个囚犯都无比聪明,所以交流与否,不影响最终决策。去掉“不能交流”,答案不会有任何变化。


当五个囚犯经过推理,都认定自己必死的时候,有人开始琢磨:


我的推理,都是建立在个人决策的基础上,假如可以结盟呢?我找两个人结盟,把剩下两个人搞死,不就可以了吗?


想到这里,a不禁沾沾自喜,看到了绝处逢生的希望,他对b、c、d、e说:我虽然不能让你们生,但保证能让你们死。(如果我给你们每人留1个,你们都会死。)现在,上头要求至少提供两个死的名额,你们商量出个方案,只要保证我100%不死,我就配合。如果不能保证,谁也活不了。


b听了,扭头对c、d、e说:上头要求至少提供两个死的名额,a不能死,我也不能死,你们仨商量具体操作方案,如果谁能让我、a、他都100%不死,同时,又让其他二人无论如何选择都无法左右我们三人的结盟,我和a就照办。如果不存在,你们仨都会死(给你们都留1个)。


c对d、e说:上头要求至少提供两个死的名额,a、b、我,都不能死……


d、e说:开什么玩笑,你的意思不是让我俩死吗?你们爱谁死谁死!


a、b、c恍然发现,结盟的可能并不存在。


不存在一种结盟可以保证某人必活。


这个结论可以推广:


100个囚犯先后从10000颗绿豆中抓绿豆,抓得最多和最少的人将被处死——


结果一样:所有人都会死。


10000个囚犯先后从100000000颗绿豆中抓绿豆——


仍然一样:所有人都会死。


围观者曰:开玩笑吧?只是从10000人里挑最少和最多的,竟然每个人都会死,太可怕了吧?


答曰:是的。为什么如此残酷?在于假定前提——


“每个人都利己,即便不利己,也要损人,损人意味着局部利己。”


这样的假定下,唯一的结果就是大家都死。假如世界上每个人都是先求利己,利己不成的情况下求损人的话,世界马上就完蛋,谁也活不了。


既然如此,为什么我们现在活得好好的呢?


因为真实的世界放松了假定。放松的第一处是:并不是每个人都绝顶聪明。第二处是:每个人也许都想利己,但不是必然要求损人。


现在考虑,其他条件不变,一点点放松第二处假定,看结果如何变化:


a想:唉,我这么聪明的人,竟然必有一死,既然横竖都是死,别人死不死关我鸟事,随便抓一把,去他娘的!


抓了一把,一看:5个。


轮到b,b一摸,发现a抓了5个,心想:


哟,这家伙居然不是心黑到顶。我最利己的抓法是几个呢?4个。(分析略,可见楼上诸答。)


如果我抓4个,c、d、e会抓几个?都是4个。


(5、4、4、4、4)


结果是,大家都死掉。


想到这里,b倒吸了一口冷气:想不到我这么聪明的人,即便a不陷害,也逃不了一死,真是天命、天命啊!随便抓吧。


抓了17个。


剩下c、d、e,没得选了,出于利己优先的原则,都选平均数,抓11个。


(5、17、11、11、11)


a、b都死了,后三人活了。


这意味着,只要前面两人不存心害人,后面人就能活得很好。但先行者的牺牲是难免的。


原始人问现代人:凭啥我们茹毛饮血你们吃香喝辣?


现代人说:凭你投胎早啊。


原始人说:老子得不到的,孙子们也别想得到。——不繁殖了。就没有现代人了。


但要注意:b的死亡跟a还不一样。a的死亡,在放松假定后很容易避免。b的死亡,则难以避免,并有最大的悲剧意义。


在a随机抓了5个的情况下(假定a抓5个是为保证剩下的绿豆够前人的平均数,正因为有不够平均数的可能,b有能力拯救a,详论见后):假如b抓的比a多,他一定是因为抓得最多而死掉。假如b抓得比a少,他一定是因为抓得最少而死掉。后来者仅仅出于利己,就会都选平均数。哪怕cde只为利己,不为害人,b都非死不可。


a的死看起来和b类似,其实有重要不同。a可以用他的死彰显自己的高尚或卑劣:


轮到b时,b发现a抓了96个,破口大骂:王八蛋,自己死就死了,还要拉上俺们垫背!真是烂人!


轮到b时,b发现a只抓了1个,感慨万千:好人呐,好人。脱离了低级趣味的人。


但是,a抓1个,虽然给其他人留了活命机会,但无论如何救不了b。b最利己的抓法,是抓2个,那么接下来,c、d、e、会毫不犹豫地都抓2个,同时破口大骂:b这个王八蛋!


因为(1,2,2,2,2),所有人都要死。如果前两人只抓3个,无论如何,后三人死的责任都在b头上,哪怕a抓2、b抓1,c、d、e也是必死,他们的死,都是b导致的。(如果b抓50个就不会令他们都死。)


b不管怎么抓,自己都得死。而且,没有办法证明自己是个好人。b出于利己抓2反而损害了自己:非但不能活,还招来一堆唾骂。


b叹了一口气:既然横竖是死,与其死了挨骂,不如死了有人记得我的好。


抓了50个。


轮到c,发现筐里剩下45个,掐指一算,ab的平均数是27.5,他毫不犹豫地抓27。


轮到d,发现还剩18个,他想抓平均数27,不够了,只好抓了17个。心里对e说,兄弟,对不住了,不是有意要害你,哥哥自身保命要紧。


(5、50、27、17、1)


b救了a、c、d,牺牲了自己。


c并不知道,自己的命是b救的,他抓的时候还怀疑ab分别抓了(28、27)。d也不知道b救了他。e就更不知道了。


b的善意没人知道。——除了a。


当a发现自己最终没死的时候,被b感动得痛哭流涕:好兄弟!


换言之,如果a足够聪明,他会想到,他的生死,可能决定在b手里。


比如:a抓5个,b有办法让a必活(抓90个)。


但是,这种决定,需要一个前提,即:b有报恩心态。


我们定义一下报恩心态:


弱报恩心态:如果别人表现出对我好,在不影响自利的前提下,我选择对他好。


强报恩心态:如果别人在可以对我坏的情况下,选择不对我坏,在不影响自利的前提下,如果我可以对他坏或不对他坏,则选择不对他坏。


由于报恩心态在世间是真实存在的,所以a存活的几率很大。


a只要不杀b,放b一马,b虽知必死,只要有强报恩心态,a就必活。


但世间存在的弱报恩心态比较普遍,强报恩心态相对较少。——如果我活着,让我对你好当然可以,我都死了,对你好不好我才不在乎呢。


换言之,a的存活取决于b是否具备强报恩心态。而bcde是否必死,取决于a是否追求损人。


如果,a是个平庸但不卑鄙的人(只追求利己,不追求损人),则在后继者b有强报恩心态的情况下,会享受到先行者的红利。否则,a会成为死在沙滩上的前浪。


所以,在真实的社会模型中(利己但未必损人的假定下),a一定不会选择抓96,让所有人都死掉。


而b,无论如何,既无法享受先行者的红利,也无法避开后继者的迫击,后人仅仅出于自利就会把他弄死,除了先行者感谢他的不杀之恩外,没有人念他的好。


我们可以把这叫做:“老二的悲剧”。


现在假定,a是高尚的人。


先给高尚一个定义:


弱高尚:如果可以自利,就自利。如果不能自利,利人也好。(这个定义并不严密,因为有时候自利牵涉到损人,严密的定义太复杂,故从略。另外,报恩心态,也算是弱高尚的一个具体例子。)


强高尚:利人和自利无区别。


强高尚在世人身上鲜少存在,一般只存在于有血缘关系的近亲或有宗教信仰的人身上。弱高尚则相对普遍。


假定a是弱高尚的人,他意识到,在世界上不存在其他高尚的人的情形下,自己难逃一死。既然横竖都是死,不如,做个高尚的人。


a选择只抓1个。


这就意味着,a以一己之力,让全世界牺牲的概率最小。


但,这仅仅是概率。a的力量有限,他还需要另一个人的成全。


假如b是庸俗的人,会选抓2个。


c、d、e都是庸俗的人,都只抓2个。


(1,2,2,2,2)


全都死掉。a虽然愿意拯救世界,但落空了。


但只要,b、c、d、e里,有一个人,愿意抓50个,就能救所有的人,除了自己和a。


a的死,是求仁得仁。自己的死,是舍生取义。


因为有两人选择主动牺牲,其他人都可以得救。


假如70亿人,先后从1000亿绿豆中抓绿豆,最多的和最少的会死掉的话,


只要存在2个以上高尚的人,世界就会得救。


地藏菩萨云:地狱不空,誓不成佛。我们所处的世界并非不险恶,不逐利。但之所以没有塌陷,还能支撑许多庸凡的人平静地生活,正因为有聪明绝顶的人,在觉悟了世界的冰冷和绝望之后,自甘做出牺牲来消融世界的冰。


原文链接:http://www.zhihu.com/question/19912025/answer/45715210


一个问题能够这么详细的去阐述,确实是很有魅力!!!


  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值