用小白鼠鑑別有毒藥水問題

2021-09-07 21:34:00 字數 1618 閱讀 6995

題設:有n瓶水,其中有一瓶水有劇毒,如果小白鼠喝了會在24小時的時候死亡。

問:用多少只小白鼠能夠檢測出哪瓶水有劇毒?

要求:用的小白鼠數量少並且用時要短,並給出合理的過程與結論。

我的解題思路如下:

這是乙個二進位制開關(

0/1)問題,模擬于海明碼校驗演算法,將藥水進行二進位制編號(

0000000,0000001,0000010,0000011...

),算出至少多少位二進位制能夠將所有的小白鼠進行完全編號;

然後根據二進位制的位數選取小白鼠,將小白鼠對應於相應二進位制位,之後去依次遍歷不同小白鼠的相同位,如果此位為

1則喝下一點此瓶的藥水,此位為

0則不喝(至於怎麼喝不是我們考慮的範圍內,可以先按位進行藥水的混合,放到其他的瓶中,再讓小白鼠去喝混合後的藥水,當然混合後的藥水數量與選取小白鼠數量是相同的);

最後通過小白鼠的死活去鑑定哪瓶藥水有劇毒。

模擬例項分析:

1)假設共有

6瓶藥水,其中

1瓶有劇毒,其他無毒

2)通過計算

2^3 = 8 >= 6

,可知3

位二進位制數可以完全對所有藥水瓶進行編號,因此我們要選取

3只小白鼠做實驗

3)對藥水瓶進行二進位制編號,並且讓小白鼠按位去喝藥水(遇見

1喝,遇見

0不喝),示意圖如下所示:

小白鼠 二進位製碼

水瓶編號 a

b c0 0

0 01 0

0 12 0

1 03 0

1 14 1

0 05 1

0 1然後讓小白鼠

a去喝編號為4、

5瓶中的水;小白鼠

b去喝編號為2、

3瓶中的水;小白鼠

c去喝編號為1、

3、5瓶中的水

如果小白鼠a、

b、c都沒死(

000)

,則編號為

0的水瓶中的水有劇毒;

如果小白鼠a、

b沒死,c死(

001)

,則編號為

1的水瓶中的水有劇毒;

如果小白鼠a、

c沒死,b死(

010)

,則編號為

2的水瓶中的水有劇毒;

如果小白鼠

a沒死,b、

c死(011)

,則編號為

3的水瓶中的水有劇毒;

如果小白鼠a死,

b、c沒死(

100)

,則編號為

4的水瓶中的水有劇毒;

如果小白鼠a、

c死,b沒死(

101)

,則編號為

5的水瓶中的水有劇毒;

(實質上:我們可以保持小白鼠的位置不變,給沒死的小白鼠貼上標籤

0,死的貼上標籤

1,會得出一串二進位製碼,在將此段二進位製碼轉換成為十進位制,即得出有劇毒水瓶的編號)

4)隨著水瓶數量

n的增加,我們通過

2^m >= n

計算出所需要的小白鼠的數量m即可

用小白鼠鑑別有毒藥水問題

題設 有n瓶水,其中有一瓶水有劇毒,如果小白鼠喝了會在24小時的時候死亡。問 用多少只小白鼠能夠檢測出哪瓶水有劇毒?要求 用的小白鼠數量少並且用時要短,並給出合理的過程與結論。我的解題思路如下 這是乙個二進位制開關 0 1 問題,模擬于海明碼校驗演算法,將藥水進行二進位制編號 0000000,000...

用小白鼠鑑別有毒藥水問題

題設 有n瓶水,其中有一瓶水有劇毒,如果小白鼠喝了會在24小時的時候死亡。問 用多少只小白鼠能夠檢測出哪瓶水有劇毒?要求 用的小白鼠數量少並且用時要短,並給出合理的過程與結論。我的解題思路如下 這是乙個二進位制開關 0 1 問題,模擬于海明碼校驗演算法,將藥水進行二進位制編號 0000000,000...

小白鼠鑑別有毒水問題

題目 有1000瓶水,其中有一瓶有毒,小白鼠只要嘗一點帶毒的水24小時後就會死亡,至少要多少只小白鼠才能在24小時時鑑別出哪瓶水有毒。將1000瓶水編號。準備10個盤子並編號。準備10只小白鼠並編號 2 10 1024,用二進位制表示為10000000000,一共有11位,因為1024 1000,所...