有100個無期徒刑囚徒,被關在100個獨立的小房間,互相無法通信。每天會有一個囚徒被隨機地抽出來放風,隨機就是說可能被抽到多次。放風的地方有一盞燈,囚徒可以打開或者關上,除囚徒外,沒有別人會去動這個燈。每個人除非出來防風,是看不到這個燈的。
一天,全體囚徒大會,國王大赦,給大家一個機會:如果某一天,某個囚徒能夠明確表示,所有的囚徒都已經被放過風了,而且的確如此,那麼所有囚徒釋放;如果仍有囚徒未被放過風,那麼所有的囚徒一起處死!
囚徒大會後給大家20分鐘時間討論, 如果你是其中的一員,應怎樣利用這20分鐘的時間來制定一個切實可行的辦法呢?
如果說是某一個囚犯一直無法抽到出去放風,那他們就確實無法出去了。不需要考慮這樣的可能哦。
這題確實比較難。補充一下:不要去考慮什麼犯人突然死亡的意外因素。是純粹的理論題。
一、第一個放風者,無論燈的初始態,都把燈調到‘開’。並設定X=1
二、對後來的任何一個放風者:
1。如果在這此放風之前也放過風而且碰過燈,則不碰燈;
2。否則如果進來時看見燈是‘關’則不碰燈;
3。如果從未碰過燈(儘管以前也許放過風)而且進來時燈是‘開’,則關燈。
三、第一個放風者,不放風一段時間後再回來放風時,
1。如果燈是‘關’,證明上次緊接他而來放風的人當中,有一個從未碰過燈的人,於是他把X加一,並把燈打開;
2。如果燈是‘開’,證明他上次走後,一直沒人碰過燈,於是他不碰燈,也不變X的值。
3。等到X=99時,他就宣告‘所有100個囚徒都已放過了風’,解放大吉。
按這個程序,囚徒不可能會出錯。因為除了第一個放風者,其他人每人都不會碰燈多於一次,而每次燈從開變成關,都是因為這些‘其他人’碰了燈。而且,囚徒出獄的概率,隨着日久天長和各囚徒的萬壽無疆,無窮逼近百分之百。這是因為一個囚徒若非第一個放風者(叫他Z),他沒機會碰燈的事件,小於他沒被抽中放風或者他被抽中而剛好排在另一個不是Z的人後面。
在此得鳴謝一下直言。他(據彩虹說是google抄來)的解法不冒出錯的風險,但囚徒出獄的概率,不能逼近百分之百,因為每個囚徒(第一個除外)只能在第一次放風時才允許碰燈。於是有可能有些囚徒第一次放風時因為沒有機會碰,以後再放風時想碰都不允許碰。例如:
只有3個囚徒:全一、一全、一套。
只要在開頭四天內出現如下的情形,直言的辦法就永無出頭之日了:
第一天:全一放風,於是燈打開。
第二天:一全放風,屁事都不干。
第三天:一套放風,也是屁事都不干。
第四天:全一放風,見燈仍是開着,知到起碼另一人放過風,但不知是否其他兩人都來過。把燈關上。
然後:不論一全和一套各自再來放風多少次,他們都是不敢碰燈,按你的那個笨辦法。所以全一的世界觀永遠只是停留在第四天的水平。
我的辦法,把他的‘從未放過風’改成了‘從位碰過燈’。