老鼠与毒药问题的推广

转载 2012年03月30日 15:04:42
      大家应该都听说过这个老题目:有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?

    这个问题的答案也堪称经典:把瓶子从 0 到 999 依次编号,然后全部转换为 10 位二进制数。让第一只老鼠喝掉所有二进制数右起第一位是 1 的瓶子,让第二只老鼠喝掉所有二进制数右起第二位是 1 的瓶子,等等。一星期后,如果第一只老鼠死了,就知道毒药瓶子的二进制编号中,右起第一位是 1 ;如果第二只老鼠没死,就知道毒药瓶子的二进制编号中,右起第二位是 0 ⋯⋯每只老鼠的死活都能确定出 10 位二进制数的其中一位,由此便可知道毒药瓶子的编号了。

    现在,有意思的问题来了:如果你有两个星期的时间(换句话说你可以做两轮实验),为了从 1000 个瓶子中找出毒药,你最少需要几只老鼠?注意,在第一轮实验中死掉的老鼠,就无法继续参与第二次实验了。
 
    答案:7 只老鼠就足够了。事实上,7 只老鼠足以从 37 = 2187 个瓶子中找出毒药来。首先,把所有瓶子从 0 到 2186 编号,然后全部转换为 7 位三进制数。现在,让第一只老鼠喝掉所有三进制数右起第一位是 2 的瓶子,让第二只老鼠喝掉所有三进制数右起第二位是 2 的瓶子,等等。一星期之后,如果第一只老鼠死了,就知道毒药瓶子的三进制编号中,右起第一位是 2 ;如果第二只老鼠没死,就知道毒药瓶子的三进制编号中,右起第二位不是 2,只可能是 0 或者 1 ⋯⋯也就是说,每只死掉的老鼠都用自己的生命确定出了,三进制编号中自己负责的那一位是 2 ;但每只活着的老鼠都只能确定,它所负责的那一位不是 2 。于是,问题就归约到了只剩一个星期时的情况。在第二轮实验里,让每只活着的老鼠继续自己未完成的任务,喝掉它负责的那一位是 1 的所有瓶子。再过一星期,毒药瓶子的三进制编号便能全部揭晓了。

    类似地,我们可以证明, n 只小白鼠 t 周的时间可以从 (t+1)n 个瓶子中检验出毒药来。

趣题:老鼠与毒药问题的推广

文章来源:http://www.matrix67.com/blog/archives/4361 今天的趣题来源于 IBM Ponder This 三月份的谜题。    大家应该都听说过这个老题目:有 ...

老鼠毒药问题

大家应该都听说过这个老题目:有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪...

老鼠与毒药问题

该趣题来源于 IBM Ponder This 三月份的谜题。    大家应该都听说过这个老题目:有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星...
  • xywlpo
  • xywlpo
  • 2011年05月27日 17:38
  • 7751

老鼠毒药问题和它的扩展

这是一个传播得非常广的问题:有1000瓶液体,其中一瓶是毒药,其他的都是清水。毒药看上去和水一样,只能用老鼠来试验。老鼠在喝了毒药以后一个星期后一天内的任意时刻死亡。最少需要多少只老鼠才能找到毒药?...

科学方法论--信息论、老鼠毒药问题、称球问题(全文)

为完整起见并方便阅读,将上次的博文及续篇全文登载于此。 我在帖子“大将军数学题2-答案”中,出了一道有关用老鼠检测毒药瓶的附加题: 有100只一模一样的瓶子,编号1-100。其中99瓶是水...

科学方法论--信息论、老鼠毒药问题、称球问题(全文)

一道有关用老鼠检测毒药瓶的附加题:   有100只一模一样的瓶子,编号1-100。其中99瓶是水,一瓶是看起来像水的毒药。只要老鼠喝下一小口毒药,一天后则死亡。现在,你有7只老鼠和一天的时...

从老鼠试验毒药的算法想到的

问题描述:有1000桶酒,其中1桶有毒。而一旦吃了,毒性会在1周后发作。现在我们用小老鼠做实验,要在1周后找出那桶毒酒,问最少需要多少老鼠。 答案:老鼠个位为:10只, 2^10 = 102...
  • Qyee16
  • Qyee16
  • 2012年05月31日 23:48
  • 2813

微软笔试题-老鼠与毒药

有1000个一模一样的瓶子,其中有999瓶是普通的水,有1瓶是毒药。任何喝下毒药的生命都会在一星期之后死亡。现在你只有10只小白鼠和1个星期的时间,如何检验出哪个瓶子有毒药?   解答:把瓶子从 ...
  • ryvipa
  • ryvipa
  • 2013年04月06日 16:31
  • 1555

微博里很热的1000瓶子10小白鼠找毒药问题

有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药? 原帖...

一个算法问题,现有一千瓶药水,其中九百九十九瓶是完全一样的, 只有一瓶里面是毒药

现有一千瓶药水,其中九百九十九瓶是完全一样的, 只有一瓶里面是毒药,但是外观上分辨不出来。 毒药如果给小白鼠喝一点,一星期后这只小白鼠会突然死亡, ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:老鼠与毒药问题的推广
举报原因:
原因补充:

(最多只允许输入30个字)