五個囚犯先後從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


一個問題能夠這麼詳細的去闡述,確實是很有魅力!!!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章