提示:1、他們都是很聰明的人;2、他們的原則是先求保命,再去多殺人;3、100顆不必都分完,但要保證每人至少抓一顆;4、若有重複的情況,則也算最大和最小,一併處死。
這個算法題是在網上看到的,覺得很有趣,而且很多數學分析師做了很多分析見解,看完之後,覺得很有魅力。所以總結一下:
曾加的見解:
“他們的原則是先求保命,再去多殺人”。
我的理解是:
- 每個人採取方案,使得剩下的人在採取最佳方案的時候,自己的存活概率最大;
- 如果有多種方案使得自己的存活概率最大且相同,則採取殺死人最多的方案;
假設我的理解正確,那麼,這道題將會有一個可怕的答案。
定義: 爲第 個人取走的綠豆數,而 爲前 個人取走的總綠豆數
引理 1:
當 個人 () 取過綠豆時,如果被取走的綠豆數滿足
則第 個人應該取 顆綠豆’
證明:
這個方案,可以確保自己不死,同時剩下未取豆子的人死亡概率最大。
其中:
- 是確保剩下的人至少有一顆綠豆可選,且自己至少取了 2 顆;
- 是確保自己取的綠豆數至少比前面取的最多的人少 1 ;
由於 , 有, 這不僅保證了自己取的豆子數不是最多的,並且其他人不可能都取到那麼多,所以自己必然存活;
- 如果 ,他在確保自己存活的情況下,使得剩下的豆子數最少,這樣可以殺更多的人;
- 如果,他在確保自己存活的情況下,剩下的人每個人只能取 1 顆豆子,確保殺死剩下的所有人;
推論1:如果第 1 個人想要存活,那麼他取的豆子數不能超過 20 顆,否則,後面的人只要採取引理1 的方案,將保證自己存活,且此時第 1 個人會因爲取的綠豆數最多而死亡,而最後 1~3 個人(根據第 1 個人取的綠豆數)會因爲自己取的豆子數最少而死亡;
引理 2:當 時,若,
則第 個人應該取 顆綠豆’來確保自己的存活概率最高
(其中, 是均值的四捨五入)
因爲當且僅當在這種情況下,只要前面的人取的綠豆數的最大最小值之差不小於 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是非常緊張的,他開始了思考。
對他來講,有上中下三種策略
- 上策:自己活着
- 中策:全部死光光
- 下策:自己死了,但有其他人活着。
- A如果拿8顆豆子,B拿1顆豆子,C拿1顆豆子。全死。
- A如果拿7顆豆子,現在輪到B做選擇了
- B如果拿1顆豆子,C不敢拿1顆,必然拿2顆。C獨活。
- B如果拿2顆豆子,C只能拿1顆,B獨活。
- 因爲B是個理性人,B這個小婊砸一定會拿2顆。AC死了。
- A如果拿6顆,B就拿3顆;A如果拿5顆,B就拿4顆。都是B獨活,AC死。(我真的不是在黑A站)
- B已經找到了規律,那就是,讓自己拿的數量在AC之間,就可以保證活。想到此處,他不由得笑出聲來。A冷冷的看了他一眼。
- A如果拿4顆,現在輪到B做選擇了。
- 如果B拿5顆,C只能拿1顆,A獨活,BC死。
- 如果B拿4顆,C不論拿幾顆,都是三人同死。
- 如果B拿3顆,C在得知前兩人共拿7顆的情況下,選擇拿3顆,三人同歸於盡。
- 如果B拿2顆或1顆,C會選擇拿3顆,C獨活。AB死。
- B驚奇的發現,不管怎麼選,自己都會死。他是不會選擇讓C這個小婊砸活着的。
- 於是B選擇了拿3顆。
- A如果拿3顆,B略微思索了一下,也會選擇三個人同歸於盡。
- A如果拿2顆,B會拿3顆,但是C哈哈一笑(C已經習慣了在B的腦洞中死亡),他不拿5顆,也不拿4顆,也不會拿1顆,他拿了3顆。三人同歸於盡。
- A如果拿一顆,那麼(感謝 @胡昌俊 指正)
- B選1顆,3人同死
- B選2顆,CC會選擇三人同歸於盡。
- B選3顆或以上,C選AB的平均數。AC活,但B死,所以B不會做這個選擇。
ABC卒。
我們歸納出一個定理:如果3個人有n個豆子,,且A不知道B和C是不是理性的,他可以選擇,如果ABC三人都是理性的,他們會同歸於盡。
時光荏苒,有個變態又抓到了4個人,ABCD,然後給了他們20顆豆子。
我們繼續從如果A拿20顆豆子開始分析。啊,不,還是直接寫結論吧。
- 當A選擇17個時,同歸於盡。
- 當A選擇16到6個時,B活着。A死。
- 當A選擇5時,B選4,C選4,D選擇4和大家同歸於盡。
- 當A選擇4時,B選5,C選4,D選擇4和大家同歸於盡。
- 。。。
- A發現自己必死。於是他拿了5顆豆子,他寄希望於其他人高尚一些。
- ABCD卒。
====程序員的分割線===
後來我又寫了個程序,模擬瞭如下狀況:
假設所有人都假設其他人的選擇是隨機的(可能是因爲每個人都假設其他人可能是聰明人,笨的人,高尚的人,自私的人,抑鬱症患者等),那麼在所有的樣本空間裏(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
一個問題能夠這麼詳細的去闡述,確實是很有魅力!!!