找毒药问题

文章讨论了在一个小时内通过给老鼠试药找出有毒药水的方法,利用二进制编码减少试验次数。提出了一种策略,将老鼠视为二进制位,通过分组试药确定毒药。变种问题探讨了更多时间限制下的最少老鼠数量和多瓶毒药的情况,强调了问题背后的理论基础——信息论和信息熵。
摘要由CSDN通过智能技术生成

原题:

题目大意:有10瓶药水,其中有一瓶是毒药,老鼠喝下毒药之后在一个小时后会死亡,需要你在一个小时内找到最少需要多少老鼠可以找出那瓶毒药。

分析:在一个小时内找到,就说明我们只有一次试药机会,每只老鼠喝下药水之后只有两种情况,那就是死或者不死,那么n只老鼠喝下药水之后就会有 2^n 方种情况, 在试药时我们可以考虑一种施药方法,,给第一只老鼠试用1号药水,2号老鼠试用二号药水,1,2两只老鼠同时试用3号药水,根据老鼠死亡情况,我们就可以判断出1,2,3号药水哪瓶是有毒的。我们可以知道老鼠死与不死的情况有多少种,我们就能试出多少瓶药。

根据上述例子,我们可以把每只老鼠看作一个二进制数位。10 < 2^4, 所以,最少要用四只老鼠。

10瓶药水表示:

0001 第一瓶

0010 第二瓶·

0011 第三瓶

0100 第四瓶

0101 第五瓶

0110 第六瓶

0111 第七瓶

1000 第八瓶

1001 第九瓶

1010 第十瓶

可以得到分为四组,每组代表一只老鼠喝药情况, 让第一只老鼠喝下第一位为1的药水, 第二只老鼠喝下第二位为1的药水…… 第n只老鼠喝下第n位为1的药水

第一只:{1, 3, 5, 7, 9};

第二只:{2, 3, 6, 7};

第三只:{4, 5, 6, 7};

第四只: {8, 9, 10};

如果第一只老鼠死了说明第一位为1,否则为0,如果第二只老鼠没死,我们就可以知道第二位为0,依次类推,我们可以得到每一位二进制0与1的情况,进而得知第几瓶药是毒药。

 

根据上述规律,我们可以得出,1000瓶药时只需要10只🐭就可以试出所有情况。

 

题目变式一:

那如果我们在两个小时内给小鼠试药,最少需要几只老鼠呢

分析:在两个小时内试药,有三种情况:

第一天死;

第二天死;(如果第一天不死就可以继续试药)

两天都不死

第一只老鼠喝下第一位编号为0的药水, 若死亡则说明组高位是0,如果一个小时不死,就接着喝下第一位是1的药水,如果死亡,则说明最第一位是1,如果不死则说明是第一位是2。

根据这种试药情况,n 只老鼠最多试出 2 ^ n瓶药.

 

变式二:

1000瓶药水里有2瓶毒药,需要多少只小鼠

2瓶毒药时,小鼠生存情况有1000*999种

 

总结:找毒药问题所涉及的思想是信息论,而小鼠的喝下药水生存情况是它的信息熵

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值