1000桶酒中含兩桶毒酒問題

鏈接毒酒問題中給出如下問題:

國王爲10天后的生日宴會準備了1000桶酒,不幸的是,其中兩桶被下了毒。爲了確定兩桶毒酒,有人提議用死刑犯試毒。毒的潛伏期爲10天。 
問:至少需要多少個死刑犯才能確保找出毒酒?方案如何實行?

 

這個題目看上去是1000桶酒中含一桶毒酒問題的簡單擴展,但是實際上難度遠遠大於一桶毒酒問題的情況.

 

利用信息論容易得出至少需要19個死囚纔有可能找出所有毒酒.但是這只是一個粗糙的下界.

 

方案一:鏈接7#中六邊形雞尾酒構圖使得使用6a+3個囚犯可以識別3a^2+3a+1桶酒(至多兩桶毒酒)

 

 

方案二:Constant-weight code中利用別人現成的一些的結果得出一個41個囚徒解決1095桶酒的方案(正好兩桶毒酒)

其中:A(n,d,w)表示那些長度爲n比特的二進制數的集合的最大元素數目,其中集合中任何兩個元素不同比特位數目不小於d,而每個二進制數正好有w比特爲1.
那麼對於A(n,w+1,w)中的方案(w爲奇數),任何兩個比特1數目爲w的二進制數,不同的位置至少有w+1;也就是相同的比特1最多(w-1)/2個. 對應到本題,讓A(n,w+1,w)桶酒讓n個囚徒喝,其中n個比特位分別對應n個囚徒.每個二進制數對應一桶酒.每個二進制數上比特1對應的囚徒要喝掉對應的酒.
那麼如果某桶酒有毒,那麼那個對應的二進制數所有比特1對應的囚徒必然死去.反之如果某桶酒無毒,那麼由於只有兩桶毒酒,所以這個對應的二進制數最多有2*(w-1)/2=w-1個囚徒死去.
也就是我們可以根據每桶酒對應的二進制數所有比特1對應的囚徒是否全部死去來判斷酒是否有毒.

 

鏈接25#給出一個複雜度的上界O(log^2(n)),而鏈接30#給出方法二在n充分大時可以到達複雜度O(log(n)),所以是非常不錯的方法.

 

方案三:Union-free Hypergraphs and Probability Theory利用2^n階有限羣中的一個構造達到了4n個囚犯解決2^n桶酒的問題,從而利用40個囚徒解決了1024桶酒的方案(正好兩桶毒酒)

 

方案四:令人驚奇的是通過google找到了一種概率方法,竟然可以優化到了33個囚徒.鏈接中的附件給出了33個囚徒和34個囚徒解決1000桶酒問題的一個方案(兩桶毒酒)

 

鏈接65#通過計算機搜索找出一些在酒桶數目較小時的較優方案,得出囚徒數目不超過5時只能識別n+1桶酒,6人可以識別8桶,7人識別10桶.

而8人能夠識別13桶(但是不知道是否最優,更多人時同樣無法確保最優),9人16桶,10人20桶,11人26桶,12人32桶,13人39桶,14人47桶

 

方案五:但是沒想到tannis_jin通過給出將類方案一方案進行改善也取得非常好的效果.實際上,比如方案一中六邊形構圖中,由於我們可以將問題劃分成3組不同的每組2a+1種雞尾酒的方案,其中2a+1種雞尾酒有一種或二種是毒酒的識別問題.對這2a+1種雞尾酒,我們不需要2a+1個囚徒,而只需要h(2a+1)個人,其中h(2a+1)是可以識別2a+1桶含最多兩桶毒酒情況的最小人數.比如h(12)<=8,h(15)<=9,h(19)<=10,h(25)<=11,h(31)<=12,h(46)<=13於是我們得到3h(2a+1)個人可以識別3a^2+3a+1桶酒.所以根據前面計算機搜索的h(46)<=13可以得出39個人可以識別1519桶酒

 

方案六:在73#種tannis_jin進一步指出正方形方案可以做的比六邊形方案更加好,於是a^2桶酒只需要2h(a)+h([a/2])個囚徒.而74#爲此專門用計算機搜索12個人的方案結果找到了12個人識別33桶酒(包含兩桶毒酒)或32桶最多包含兩桶毒酒的方案.由此我們得到h(32)<=12

於是1024桶酒只需要2h(32)+h(16)<=2*12+10=34個囚徒.而其中h(16)非常有可能可以達到9,只是現在計算機沒有搜索出來(計算機搜索出9個囚徒可以識別正好包含兩桶毒酒的16桶酒,但是如果16桶中可能兩桶毒酒或一桶毒酒,那麼沒有搜索成功).也就是34個囚徒識別了1024桶酒(其中正好兩桶毒酒)

同樣,tannis_jin把正方形方案擴展成10*10*10的立方體方案,也得出一個34個囚徒的方案.這個方案也可能可以改進(主要對角線方向的識別),即34人識別1000桶酒(正好兩桶毒酒)的方案

 

而到現在爲止,我們找到的最好的方案還是通過方案四中的概率方法得出的33個囚徒解決1000桶正好包含兩桶毒酒的問題,次優方案是方案六中可以得出的34個囚徒的方案.當然我們還是無法知道最優方案是多少,可以確定的其範圍在19個囚徒到33個囚徒之間

 

發佈了19 篇原創文章 · 獲贊 5 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章