起因,這兩天多校概率題挺多的,又不太會做。
剛好學長發了一些概率問題知識就有這個就去了解了一下
有一個很反直覺的問題,叫作百囚徒挑戰。
很多時候,我們都會靠直覺去評價一件事情,但很多時候,我們的直覺是錯的,哪怕感覺有多麼準確,而最著名的反直覺問題,就是百囚徒挑戰。
問題描述
監獄決定給關押的100名囚徒一次特赦的機會,條件是囚徒通過一項挑戰。1、所有囚徒被一一編號,編號為1-100。
2、將編號1-100的100個號碼牌,隨機放在100個抽屜。
3、每個囚徒可以開啟最多50個抽屜,如果找到對應自己編號的號碼牌,則該囚徒挑戰成功,反之挑戰失敗。
4、所有囚徒全部挑戰成功,該項挑戰才算成功,任意一名囚徒挑戰失敗,則該項挑戰失敗!
前三點看起來並不難,但第四條直接將難度直線升級。從直覺來看,每個囚徒完成挑戰的概率就是1/2,而且每個囚徒的挑戰都是獨立事件,所以100個囚徒同時成功的概率就是(1/2)的100次方,這個數,幾乎接近於零!
那麼為什麼說這個問題是反直覺的?
實際上,這個題目並不是單純的概率題。比如考慮最簡單的情況,囚徒只有兩人,那麼他們每人只能從兩個抽屜裡選擇一個抽屜開啟,這時他們被釋放的概率是1/4嗎?不是。如果兩個囚徒開啟不同的抽屜,那麼他們被釋放的概率是 1/2,反之如果兩個囚徒開啟同一個抽屜,那麼他們被釋放的概率是0.
因此,只要囚徒採取了正確的策略,那他們獲勝的概率很大,在人數為100人時,仍舊有 \(30\%\) 那麼多。同時,當人數趨於無窮,這個概率不會變得更小,而是趨近於 \(1 - ln\ 2\) !!
下面開始解釋為什麼概率是趨近於 \(1 - ln\ 2\)
解答的細節來自知乎的大佬 Yuz.Scarlet
不妨假設抽屜裡的號碼牌是隨機放置的(否則,囚徒可以自己在腦內打亂所有抽屜的位置以達到同樣的效果※),之後囚徒首先為抽屜編號,例如從左上到右下依次編號。而每個囚徒的策略,就是首先開啟與自己編號相同的抽屜,從中取出號碼牌,並開啟號碼牌所對應的抽屜。之後,重複此過程,直到找到自己的號碼牌,或者50個抽屜的機會用完。
例如,29號囚徒首先開啟了29號抽屜,裡面放著51號的號碼牌,於是他開啟51號抽屜,裡面放著18號的號碼牌,於是他開啟18號的抽屜,裡面放著29號的號碼牌,他完成了任務。(只是隨便舉例)(※※)
為了計算成功概率,首先對這個遊戲進行化簡。將抽屜與號碼牌的對應關係視為一個對映,例如 \(f(29) = 18,f(51) = 18\) ,那麼從任意一個數出發,不停地迭代計算,最終總能回到這個數。通過這種方法,\(1\) ~ \(100\) 的數字被分割為了一些“圓環”,而每個圓環的長度不一,比如 \(3 \to 3\) 的長度就是1,意味著3號抽屜裡裝著3號號碼牌, \(29 \to 51 \to 18\to 29\) 的長度是3;這時,我們發現,所有囚徒能夠通過挑戰,當且僅當所有圓環的長度不超過50,此時顯然每個囚徒都能在50次以內找到自己的號碼牌,反之如果有一個圓環長度超過50,那麼這個圓環上的所有人都會失敗。
接下來就是計算了。比起計算“所有圓環的長度不超過50”的概率,“有一個圓環長度超過50”的概率更容易計算。因為“有一個圓環的長度是51”和“有一個圓環的長度是52”之類的事件是彼此互斥的(圓環的長度總和是100),所以總概率就是它們的和。而對於 \(m \ge 51\) ,只需先選出 \(m\) 個元素,將它們構成一個環,之後再將剩下的元素隨機打亂即可唯一地得到一種分佈。
具體地說,所有形成長度為 \(m\) 環的對映種類為 \(C_{100}^m * (m-1)!*(100 - m)! = 100!/m\) ,全排列個數為 \(100!\) ,因此這個概率等於 \(P(m) = 1 / m\)
綜上,所有圓環長度不超過50的概率等於 \(P = 1 - \sum\limits_{m = 51}^{100}\frac 1m ≈ 0.312\) ,這個概率就是囚徒被釋放的概率。當囚徒人數趨於無窮大時,概率趨向於 $ P = 1 - \sum\limits_{m = N + 1}^{2N}\frac 1m ≈ 1-ln\ 2$
不那麼嚴密地說,這個策略的關鍵點在於讓所有囚徒儘可能地一起成功或者一起失敗,因此所有玩家的任務不再是獨立的,一旦有一個人成功,他所翻出的號碼牌對應的人也一定會成功,同時只要有一半的人成功,剩下的人都一定成功。
通過計算可得,在之前所有人都成功的條件下,下一個人成功的概率依次為
這個策略被證明最優。
※否則,囚徒可以自己在腦內打亂所有抽屜的位置以達到同樣的效果
因為在挑戰開始之前有一個月時間商討對策,所以囚徒可以在這段時間內約定好隨機打亂抽屜的方式。另外,如果擔心囚徒的策略被獄警知曉,也可以考慮迪菲赫爾曼金鑰交換(前提是P≠NP),這是一種大聲說悄悄話的方法,具體做法是利用非對稱演算法,使得兩個沒有任何共同知識的人知曉一個共同的關鍵詞,並且任何竊聽者無法通過兩人的對話推理出這個關鍵詞,之後這個關鍵詞可以作為加密的祕鑰使用。
※※另外直觀地解釋一下這個策略的含義,這裡以10個人的情況舉兩個例子。
假如說10個抽屜與號碼牌的對應關係如下:
1號抽屜→5號牌
2號抽屜→7號牌
3號抽屜→3號牌
4號抽屜→2號牌
5號抽屜→9號牌
6號抽屜→10號牌
7號抽屜→4號牌
8號抽屜→8號牌
9號抽屜→1號牌
10號抽屜→6號牌
1號囚徒首先開啟自己的編號對應的抽屜即1號抽屜,取出5號號碼牌,接著開啟5號抽屜,取出9號號碼牌,接著開啟9號抽屜,取出1號號碼牌,完成任務;
2號囚徒首先開啟自己的編號對應的抽屜即2號抽屜,取出7號號碼牌,接著開啟7號抽屜,取出4號號碼牌,接著開啟4號抽屜,取出2號號碼牌,完成任務;
……
10號囚徒首先開啟自己的編號對應的抽屜即10號抽屜,取出6號號碼牌,接著開啟6號抽屜,取出10號號碼牌,完成任務;
就這樣,在這種對應關係下,所有囚徒都完成了任務;
假如說10個抽屜與號碼牌的對應關係如下:
1號抽屜→2號牌
2號抽屜→8號牌
3號抽屜→5號牌
4號抽屜→6號牌
5號抽屜→1號牌
6號抽屜→4號牌
7號抽屜→10號牌
8號抽屜→9號牌
9號抽屜→3號牌
10號抽屜→7號牌
1號囚徒開啟1號抽屜,取出2號號碼牌;開啟2號抽屜,取出8號號碼牌;開啟8號抽屜,取出9號號碼牌;開啟9號抽屜,取出3號號碼牌;開啟3號抽屜,取出5號號碼牌;任務失敗
4號囚徒開啟4號抽屜,取出6號號碼牌;開啟6號抽屜,取出4號號碼牌;任務成功