有 1000 個一模一樣的瓶子,其中有 999 瓶是普通的水,有一瓶是毒葯。任何喝下毒葯的生物都會在一星期之后死亡。現在,你只有 10 只小白鼠和一星期的時間,如何檢驗出哪個瓶子里有毒葯?


【1】根據2^10=1024,所以10個老鼠可以確定1000個瓶子具體哪個瓶子有毒。具體實現跟3個老鼠確定8個瓶子原理一樣。
000=0
001=1
010=2
011=3
100=4
101=5
110=6
111=7
一位表示一個老鼠,0-7表示8個瓶子。也就是分別將1、3、5、7號瓶子的葯混起來給老鼠1吃,2、3、6、7號瓶子的葯混起來給老鼠2吃,4、5、6、7號瓶子的葯混起來給老鼠3吃,哪個老鼠死了,相應的位標為1。如老鼠1死了、老鼠2沒死、老鼠3死了,那么就是101=5號瓶子有毒。
同樣道理10個老鼠可以確定1000個瓶子

【2】2的10次方=1024,現在先將老鼠排成一列,做一個數列,1表示老鼠是活的,0表示老鼠是死地,做完實驗之后這十只老鼠的狀態可以有1024種,現在從結果來推斷實驗方法。因為做實驗,我們不算沒有老鼠死亡的那一種情況,然后 
第一種1000000000情況表示1號老鼠死亡,其他存活,這是第一瓶有毒的結果,因此第一瓶液體只給編號為1的老鼠喝, 
第二種0100000000情況表示1,2號老鼠死亡,其他存活,這是第二瓶有毒的結果,因此第二瓶液體只給編號為2的老鼠喝, 
同理類推,用排列組合的方法繼續。 
這是用可能結果確定怎么做實驗,現在根據上面的做實驗,就可以推出結果了。



推演題:

問:如果你有兩個星期的時間(換句話說你可以做兩輪實驗),為了從1000個瓶子中找出毒葯,你最少需要幾只老鼠?注意,在第一輪實驗中死掉的老鼠,就無法繼續參與第二次實驗了。

答:7只老鼠就足夠了。事實上,7只老鼠足以從 3^7 = 2187 個瓶子中找出毒葯來。首先,把所有瓶子從0到999編號,然后全部轉換為7位三進制數。現在,讓第一只老鼠喝掉所有三進制數右起第一位是 2 的瓶子,讓第二只老鼠喝掉所有三進制數右起第二位是2的瓶子,等等。一星期之后,如果第一只老鼠死了,就知道毒葯瓶子的三進制編號中,右起第一位是2;如果第二只老鼠沒死,就知道毒葯瓶子的三進制編號中,右起第二位不是2,只可能是0或者1……也就是說,每只死掉的老鼠都用自己的生命確定出了,三進制編號中自己負責的那一位是2;但每只活着的老鼠都只能確定,它所負責的那一位不是2。於是,問題就歸約到了只剩一個星期時的情況。在第二輪實驗里,讓每只活着的老鼠繼續自己未完成的任務,喝掉它負責的那一位是 1 的所有瓶子。再過一星期,毒葯瓶子的三進制編號便能全部揭曉了。

總結:n只小白鼠和t周的時間可以從(t+1)^n個瓶子中檢驗出毒葯(一瓶)來。(是否是“至多”(t+1)^n瓶希望你們能想個法子證明或證偽:P)



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM