設萬維讀者為首頁 廣告服務 技術服務 聯繫我們 關於萬維
簡體 繁體 手機版
分類廣告
版主:諍友
萬維讀者網 > 教育學術 > 帖子
囚徒問題的破綻及推廣
送交者: 大胖球 2004年02月06日18:53:43 於 [教育學術] 發送悄悄話

最大的破綻是一天放風一人, 固定不變. 如果說成是平均一天一人(每天可以0人, 也可以N人)才行, 否則時間可以用來表示次序.

讓我們首先從一個記數人(只有第一個人記數)的算法的優化談起.

學過算法的人都知道, 討論一個算法, 平均時間固然重要, 最優時間和最劣時間也很重要.
只有一個記數人的情況下, 最優時間為198天. (假設1號為記數人, 則放風順序為2號, 1號, 3號, 1號 ... 100號, 1號).
假設最長N天內所有人必然輪一遍的情況下(不加這個條件則所有解的最劣時間為無窮大, 討論起來沒有意義), 最劣時間大概為200N.(大於100N, 略小於200N, 就不詳細計算了).

好, 如果一天固定放風一人. 則可以簡單推廣到兩個記數人.
我們對囚犯進行編號. 假設
1. 1,2 號為記數人.
2. 可被記數狀態為燈開時
3. 被記數為關燈
4. RESET為把燈從關的狀態下打開
5. PASS 為不改變燈的狀態.

我們讓奇數號的人
1.1 可被記數狀態(燈開), 奇數天時候:
A. 如果首次放風: 被記數(關燈)
B. 否則, PASS

1.2 不可記數狀態(燈關), 奇數天時候:
A. 如果首次放風: PASS並轉變為偶數號, 即下次偶數天放風為首次
B. 否則, RESET並轉變為偶數號, 即下次偶數天放風為首次

2.1 可被記數狀態(燈開), 偶數天時候:
PASS

2.2 不可記數狀態(燈關), 偶數天時候
A. 如果首次奇數天放風: PASS 並重置首次, 即下次奇數天放風為首次
B. 否則, PASS

而1號只能在奇數天處於記數狀態記數. 即

1.1 奇數天, 燈關(記數狀態):
RESET. 心中總數加一(記數)

1.2 奇數天, 燈開:
PASS

2.1 偶數天, 燈關(記數狀態)
RESET. 下次碰偶數天燈開的時候關燈

2.2 偶數天, 燈開
PASS

關於偶數號的被記數和2號的記數可以類推.

當1號數到50(包括自己)的時候, 轉變為奇號被記數人(還繼續是奇號記數人)
當2號數到50(包括自己)的時候, 轉變為偶號被記數人(還繼續是偶號記數人)

當1號或2號任何一人數到51時就可以宣布GAME OVER了.

這個的最優解要快一天. 最劣解是無窮大. 平均解很難計算, 但應該要好一點.


繼續推廣到100個記數人. 最優解為100天(每個人看見燈關並在自己的被記數天時,
才能PASS. 否則RESET. 第一個人在每個100天的第一天關燈, 當第100個人在每100天的最後一天看見燈關的時候宣布GAME OVER). 最劣解當然也是無窮大.
平均解也很難算, 但應該差很多.

這個解可以繼續優化. 例如每個人的身份可以轉換. 任何一個人在記數天都可以開燈. 轉換到最後的第100個人宣布GAME OVER等等)

所以說, 在每天一個人放風的情況下, 究竟找多少人記數是個問題.

這個問題有實際意義. 例如在一個OS中, 有100個THREAD, 但只有一BIT的存儲器. 如果固定時間內激活一個THREAD, 誰能SHUTDOWN OS的問題(最後一個被激活的SHUTDOWN OS).

如果時間不固定, 可以推廣到2盞燈, 3盞燈... 8盞燈. (9盞或以上就沒意義了).

另外, 可以考慮的還有, 如果放低要求, 保證有90%以上的把握就可以宣布了,要不然就等死了(風險/收益合適)下的優化解是什麼.

這個足夠寫篇碩士論文了.(博士論文也夠格了如果探討深入的話)


0%(0)
0%(0)
標 題 (必選項):
內 容 (選填項):
實用資訊
回國機票$360起 | 商務艙省$200 | 全球最佳航空公司出爐:海航獲五星
海外華人福利!在線看陳建斌《三叉戟》熱血歸回 豪情築夢 高清免費看 無地區限制
一周點擊熱帖 更多>>
一周回復熱帖
歷史上的今天:回復熱帖
2003: 我鄙視你,"海龜"一族!
2003: 中國名校百年沉浮
2002: 論夏雨天的"呼籲完善制度"
2002: 以“科學”和“愛國”的名義——學術腐