百囚問題是一個機率論和組合數學中的數學問題。在這個問題中，100 名有編號的囚犯必須在 100 個抽屜中找到各自的號碼才能生存下來。規則規定，每位囚犯只能開啟 50 個抽屜，且不能與其他囚犯溝通。乍看之下，這種情況似乎無望，但一個巧妙的策略為囚犯們提供了一個現實的生存機會。 丹麥電腦科學家 Peter Bro Miltersen 於 2003 年首次提出了這個問題。 問題 百囚問題在文獻中有不同的呈現版本。以下版本是由和羅伯特塞奇威克提出的： 一所監獄的所長給予 100 名死刑犯（編號 1 至 100）最後一次機會。一個房間內有一個帶有 100 個抽屜的櫃子。所長隨機在每個關閉的抽屜中放入一個囚犯的號碼。囚犯們一個接一個地進入房間。每位囚犯可以按任意順序開啟並檢視 50 個抽屜。之後抽屜再次關閉。如果在搜尋過程中，每個囚犯都在其中一個抽屜中找到了他們的號碼，則所有囚犯都將被赦免。如果哪怕一位囚犯沒有找到他們的號碼，所有囚犯都將死亡。在第一位囚犯進入房間檢視抽屜之前，囚犯們可以討論策略 但一旦第一位囚犯進入後就不得溝通。囚犯們的最佳策略是什麼？ 如果每位囚犯獨立且隨機地選擇 50 個抽屜，單個囚犯找到其號碼的機率是 50。所有囚犯都找到他們號碼的機率是單個機率的乘積，即 100 ，一個微不足道的小數。情況看起來似乎無望。 解決方案 策略 令人驚訝的是，有一個策略提供了超過 30 的生存機率。成功的關鍵在於囚犯們不必事先決定開哪些抽屜。每位囚犯可以利用從已經開啟的每個抽屜中獲得的資訊來決定下一個要開啟的抽屜。另一個重要的觀察是，這種方式下，一位囚犯的成功並非獨立於其他囚犯的成功，因為他們都依賴於數字的分佈方式。 要描述策略，不僅囚犯，抽屜也從 1 至 100 編號；例如，從左上角的抽屜開始，逐行編號。策略如下： 每位囚犯首先開啟標有他們自己號碼的抽屜。 如果這個抽屜包含他們的號碼，他們就完成了並且成功了。 否則，抽屜包含另一個囚犯的號碼，他們接下來開啟標有此號碼的抽屜。 囚犯重複步驟 2 和 3，直到他們找到自己的號碼，或因為在前五十個開啟的抽屜中沒有找到而失敗。 如果囚犯可以這樣無限地繼續下去，他們將不可避免地回到他們開始的抽屜，形成一個排列迴圈（見下文）。透過從他們自己的號碼開始，囚犯確保他們處於包含他們號碼的特定抽屜迴圈中。唯一的問題是是否有迴圈長於五十個抽屜 而且這種可能太長的迴圈只有一個，因為超過總抽屜一半的數量。 示例 這是一個有前途的策略，以下例子使用了 8 名囚犯和抽屜，其中每位囚犯可以開 4 個抽屜來說明。監獄所長以以下方式分配了囚犯的號碼到抽屜中： 抽屜號碼 1 2 3 4 5 6 7 8 囚犯號碼 7 4 6 8 1 3 5 2 現在囚犯這樣行動： 囚犯 1 首先開啟抽屜 1 並找到號碼 7。然後開啟抽屜 7 並找到號碼 5。然後開啟抽屜 5，在那裡找到自己的號碼並成功了。 囚犯 2 按此順序開啟抽屜 2、4 和 8。在最後一個抽屜中找到自己的號碼，2。 囚犯 3 開啟抽屜 3 和 6，在那裡找到自己的號碼。 囚犯 4 開啟抽屜 4、8 和 2，在那裡找到自己的號碼。這是囚犯 2 遇到的同一迴圈，囚犯 8 也將遇到。這些囚犯中的每一位都將在第三個開啟的抽屜中找到自己的號碼。 囚犯 5 到 7 也都以類似的方式找到了他們的號碼。 在這種情況下，所有囚犯都找到了他們的號碼。然而，結果並不總是如此。例如，對抽屜 5 和 8 的號碼進行微小更改將導致囚犯 1 在開啟 1、7、5 和 2（並未找到自己的號碼）後失敗： 抽屜號碼 1 2 3 4 5 6 7 8 囚犯號碼 7 4 6 8 2 3 5 1 而在以下安排中，囚犯 1 開啟抽屜 1、3、7 和 4，仍未找到自己的號碼： 抽屜號碼 1 2 3 4 5 6 7 8 囚犯號碼 3 1 7 5 8 6 4 2 事實上，除了 6 號（他直接成功）外，所有囚犯都失敗了。 排列表示 監獄所長將囚犯號碼分配給抽屜的行為，可以用數學上將數字 1 到 100 的排列來描述。這樣的排列是從 1 到 100 的自然數集到其自身的一一對應對映。重複應用排列組合後又回到第一個數字的數字序列稱為排列的一個迴圈。每個排列都可以分解為互不相交的迴圈，即沒有共同元素的迴圈。上面第一個例子的排列可以用迴圈表示法寫成 1 7 52 4 8 3 6 因此由兩個長度為 3 的迴圈和一個長度為 2 的迴圈組成。第三個例子的排列相應地是 1 3 7 4 5 8 2 6 由一個長度為 7 的迴圈和一個長度為 1 的迴圈組成。迴圈表示法不是唯一的，因為長度為 l 的迴圈可以用 l 種不同的方式寫出，取決於迴圈的起始數字。在上述策略中開啟抽屜時，每個囚犯遵循一個總是以他們自己的號碼結束的單一迴圈。在八名囚犯的情況下，這種遵循迴圈的策略僅在排列的最長迴圈長度最多為 4 時才成功。如果一個排列包含長度 5 或更長的迴圈，那麼在四步之後沒有找到自己號碼的所有囚犯的號碼都位於這樣的迴圈中。 成功機率 在初始問題中，如果排列的最長迴圈長度最多為 50，則 100 名囚犯都能成功。因此，他們的生存機率等於隨機排列數字 1 到 100 不包含長度大於 50 的迴圈的機率。這個機率確定如下。 數字 1 到 100 的排列最多隻能包含一個長度 l 50 的迴圈。這樣一個迴圈的數字有確切的 tbinom 100l 種選擇方式（見組合）。在這個迴圈中，這些數字可以以 l1 種方式排列，因為由於迴圈對稱，有 l 種排列可以表示長度為 l 的不同迴圈。剩餘的數字可以以 100l 種方式排列。因此，帶有長度 l 50 的迴圈的數字 1 到 100 的排列數量等於 binom 100l cdot l1 cdot 100l frac 100l 一個（均勻分佈的）隨機排列不包含長度大於 50 的迴圈的機率，透過單一事件公式和公式計算得出 1 frac 1100 left frac 10051 ldots frac 100100 right 1 left frac 151 ldots frac 1100 right 1 H_100 H_50 approx 031183 其中 H_n 是第 n 個調和數。因此，使用遵循迴圈的策略，囚犯在 31 的情況下能夠生存。 漸近性 如果考慮的是 2n 而不是 100 名囚犯，其中 n 是任意自然數，那麼囚犯使用遵循迴圈策略的生存機率由以下公式給出 1 H_2n H_n 1 H_2n ln 2n H_n ln n ln 2 已知尤拉 馬斯刻若尼常數 gamma，對於 n to infty lim_n to infty H_n ln n gamma 成立，得出一個漸近生存機率 lim_n to infty 1 H_2n H_n 1 gamma gamma ln 2 1 ln 2 approx 030685 由於機率序列是單調遞減的，無論囚犯的數量如何，使用遵循迴圈策略的囚犯生存機率都在 30 以上。 最優性 2006 年，Eugene Curtin 和 Max Warshauer 證明瞭遵循迴圈策略的最優性。證明基於與一個相關問題的等價性，其中所有囚犯都被允許在房間內並觀察抽屜的開啟。數學上，這種等價性基於 Foata 轉換引理，即（典型的）迴圈表示法和排列的單行表示法之間的一一對應。在第二個問題中，生存機率與原始問題中使用遵循迴圈策略的生存機率相同，且不依賴於選擇的策略。由於原始問題的任意策略也可以應用於第二個問題，但在那裡無法獲得更高的生存機率，因此遵循迴圈策略必然是最優的。 另見 囚徒困境 意外絞刑悖論 參考 書目 Category 趣味數學 Category 機率論悖論 Category 置換