谈谈“老鼠找毒水“和“猪找毒水”问题
一、問題描述
1.老鼠找毒水
有1000杯水,其中有一杯是毒藥水,現(xiàn)在需要從中找出含毒藥的水,毒水可以混合,可以用老鼠來實驗;老鼠如果喝了有毒的水,一個小時內(nèi)會死,請問如何安排試驗,能夠用最少的實驗材料在一個小時內(nèi)檢測出有毒的水?
2.豬找毒水
1000桶水,其中一桶有毒,毒水可以混合,豬喝毒水后會在15分鐘內(nèi)死去,想用一個小時找到這桶毒水,至少需要幾頭豬?
仔細(xì)觀察題目,其實區(qū)別就在與時間上的不同,老鼠找毒水,1個小時毒發(fā),時間只有1個小時,豬找毒水,豬15分鐘毒發(fā),時間有1個小時,因此可以判斷出老鼠只有做1次試驗,老鼠只有2個狀態(tài),死和沒死,豬可以做4次試驗,豬有5個狀態(tài),0-15min死,16-30min死,31-45min死,46-60min死,沒死,也就是說一只老鼠只能做一次實驗,但是一只豬可以做4次試驗,這就是2個題目的區(qū)別。
二、先說結(jié)論:利用進(jìn)制轉(zhuǎn)換解決這類問題,N次試驗就選取N+1進(jìn)制解決這類問題,并不是說一定要用二進(jìn)制解決該類問題,使用二進(jìn)制解決老鼠找毒藥問題是因為老鼠只能做一次試驗,老鼠只有2個狀態(tài),死和沒死,所以用二進(jìn)制表示老鼠的2個狀態(tài)而已,老鼠找毒水選取2進(jìn)制,同理豬可以做4次試驗,豬有5個狀態(tài),所以說豬找毒水選取5進(jìn)制。2的N次方大于1000,最小的N就是最少老鼠數(shù),5的N次方大于1000,最小的N就是最少豬數(shù),因此老鼠一次試驗找出毒藥最少需要10只老鼠,豬四次找出毒藥最少需要5只豬。
三、解決方案
1.老鼠找毒水解決方案,老鼠只有一次實驗機(jī)會,選取2進(jìn)制解決。把1-1000杯毒水使用2進(jìn)制編碼,讓第N只老鼠喝二進(jìn)制編碼第N位全為0的毒水,最后觀察死亡和未死亡的老鼠編號可以確定唯一的毒水。
2.豬找毒水解決方案,豬有四次實驗機(jī)會,選擇5進(jìn)制解決。把1-1000桶毒水使用5進(jìn)制編碼,依次讓第一頭豬喝5進(jìn)制編碼第一位為0的毒水,第二頭豬喝第二位5進(jìn)制編碼為0的毒水,以此類推第五頭豬喝第五位5進(jìn)制編碼為0的毒水,假如說第1頭和第4頭豬死了,說明毒水編號為_0__0,然后再把2,3,5頭豬依次去喝_0__0空里面編號為1的的毒水,再依次尋找編號為2,3,4的毒水,注意編號為N的豬永遠(yuǎn)只驗證第N位的數(shù)字,也就是說編號為N的豬驗證第N位數(shù)字,從數(shù)字0開始驗證,只到死亡為止可以確定第N位的數(shù)字,如果最后都沒有死,說明毒藥是下一位數(shù)字,最后可以確定毒水編號。
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的谈谈“老鼠找毒水“和“猪找毒水”问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php7安装详解_,PHP7 redis
- 下一篇: matlab下载安装全教程