1000瓶水,其中有一瓶有毒,小白鼠喝後24小時會死忙。請問最少多少隻老鼠,可以在24小時測出哪瓶有毒。
答案:最少需要[log21000]=10只小白鼠
試驗方法:
1000瓶水,分別編號從1到1000,並用10位二進制表示。
10只老鼠,編號從0到9。
喝藥策略:
對於編號爲X的水, 二進制表示爲b9b8b7b6b5b4b3b2b1b0。如果bi=1(i=0,...,9),則表示第i個小老鼠要喝這瓶水;否則,不喝。
如:ID=7的水,二進制表示爲0000000111,則表示第0,1,2只老鼠要喝這瓶水,6-9小老鼠不喝。
結果:
假設編號爲X的水爲毒水(二進制表示爲b9b8b7b6b5b4b3b2b1b0)。
如果第i個小白鼠活着,則說明第i個小白鼠沒喝這瓶水,則bi=0;
同理,如果第i個小白鼠死了,則說明第i個小白鼠喝了這瓶毒水,則bi=1。
根據10只小白鼠的活(0)或死(1)的狀態,我們就可以唯一確定毒水的編號。