設萬維讀者為首頁 廣告服務 聯繫我們 關於萬維
簡體 繁體 手機版
首頁 新聞 視頻 博客 論壇 分類廣告 購物
版主:阿飛的劍
萬維讀者網 > 茗香茶語 > 帖子
定理:囚徒放風問題的正解(修正版)
送交者: 定理 2009年12月11日12:01:56 於 [茗香茶語] 發送悄悄話
先重複彩虹前天轉貼的囚徒放風題:

有100個無期徒刑囚徒,被關在100個獨立的小房間,互相無法通信。每天會有一個囚徒被隨機地抽出來放風,隨機就是說可能被抽到多次。放風的地方有一盞燈,囚徒可以打開或者關上,除囚徒外,沒有別人會去動這個燈。每個人除非出來防風,是看不到這個燈的。 
一天,全體囚徒大會,國王大赦,給大家一個機會:如果某一天,某個囚徒能夠明確表示,所有的囚徒都已經被放過風了,而且的確如此,那麼所有囚徒釋放;如果仍有囚徒未被放過風,那麼所有的囚徒一起處死! 
囚徒大會後給大家20分鐘時間討論, 如果你是其中的一員,應怎樣利用這20分鐘的時間來制定一個切實可行的辦法呢?
如果說是某一個囚犯一直無法抽到出去放風,那他們就確實無法出去了。不需要考慮這樣的可能哦。
這題確實比較難。補充一下:不要去考慮什麼犯人突然死亡的意外因素。是純粹的理論題。

昨天我貼的,錯了。現改為如下解法:

一、第一個放風者,無論燈的初始態,都把燈調到‘開’。並設定X=1
二、對後來的任何一個放風者:
1。如果在這此放風之前也放過風而且碰過燈,則不碰燈;
2。否則如果進來時看見燈是‘關’則不碰燈;
3。如果從未碰過燈(儘管以前也許放過風)而且進來時燈是‘開’,則關燈。
三、第一個放風者,不放風一段時間後再回來放風時,
1。如果燈是‘關’,證明上次緊接他而來放風的人當中,有一個從未碰過燈的人,於是他把X加一,並把燈打開;
2。如果燈是‘開’,證明他上次走後,一直沒人碰過燈,於是他不碰燈,也不變X的值。
3。等到X=99時,他就宣告‘所有100個囚徒都已放過了風’,解放大吉。

按這個程序,囚徒不可能會出錯。因為除了第一個放風者,其他人每人都不會碰燈多於一次,而每次燈從開變成關,都是因為這些‘其他人’碰了燈。而且,囚徒出獄的概率,隨着日久天長和各囚徒的萬壽無疆,無窮逼近百分之百。這是因為一個囚徒若非第一個放風者(叫他Z),他沒機會碰燈的事件,小於他沒被抽中放風或者他被抽中而剛好排在另一個不是Z的人後面。

在此得鳴謝一下直言。他(據彩虹說是google抄來)的解法不冒出錯的風險,但囚徒出獄的概率,不能逼近百分之百,因為每個囚徒(第一個除外)只能在第一次放風時才允許碰燈。於是有可能有些囚徒第一次放風時因為沒有機會碰,以後再放風時想碰都不允許碰。例如:

只有3個囚徒:全一、一全、一套。

只要在開頭四天內出現如下的情形,直言的辦法就永無出頭之日了:

第一天:全一放風,於是燈打開。
第二天:一全放風,屁事都不干。
第三天:一套放風,也是屁事都不干。
第四天:全一放風,見燈仍是開着,知到起碼另一人放過風,但不知是否其他兩人都來過。把燈關上。
然後:不論一全和一套各自再來放風多少次,他們都是不敢碰燈,按你的那個笨辦法。所以全一的世界觀永遠只是停留在第四天的水平。

我的辦法,把他的‘從未放過風’改成了‘從位碰過燈’。
0%(0)
標 題 (必選項):
內 容 (選填項):
實用資訊
回國機票$360起 | 商務艙省$200 | 全球最佳航空公司出爐:海航獲五星
海外華人福利!在線看陳建斌《三叉戟》熱血歸回 豪情築夢 高清免費看 無地區限制