问题:⽤天平称k次,在n个球中找出唯⼀的⼀个重量不标准的次品来,n最⼤是多少?如何找?有关这个次品球的说法,通常有3种变形:
- 已知次品球是更轻(或更重);
- 不知次品球的轻重,找出它并确定轻重;
- 不知次品球的轻重;
可以利用信息论,可以估计n的最大值:
信息论
1) 如何消除不确定性
天平的作用就是消除不确定性。那么天平作一次称量,最大能够消除的不确定性为多少?天平称量的结果无非三种:a. 左轻右重; b. 左重右轻; c. 平衡。根据最大熵原理,当这三种情况等概率出现的时候,就会得到最大能够消除的不确定性为: log3 ,所以经过k次测量,最大能够消除的不确定性为: klog3 。
2) 需要的消除的不确定性
- 对于情况1,共有n种情况等概率出现,所以为: logn
- 对于情况2和情况3,理论上是一样的,共有2n种情况等概率出现,所以为: log2n
3) 满足约束
- 对于情况1,则 logn<klog3
- 对于情况2和情况3,则 log2n<klog3
实际情况
但是,因为球不能分割,很难保证每次称量呢能消去 log3 的不确定性,实际上我们可以证明(不从信息论的角度):
- 已知次品球是更轻(或更重),这时n的最大值为 3k ;
- 不知次品球的轻重,找出它并确定轻重,这时n的最大值为 (3k−3)/2 ;
- 不知次品球的轻重,这时n的最大值为 (3k−1)/2 ;
具体称量方法见:
- https://www.zhihu.com/question/20854512
- https://www.guokr.com/blog/184147/
- http://blog.sciencenet.cn/blog-677221-669159.html
- https://www.zhihu.com/question/30529801
推广:老鼠毒药问题
原始问题
有100只一模一样的瓶子,编号1-100。其中99瓶是水,1瓶是看起来像水的毒药。只要老鼠喝下一小口毒药,一天后则死亡。现在,你有1天的时间,你至少需要多少只老鼠才能检测出哪个号码瓶子里面是毒药?
在2天时间内,每只老鼠有三种结局:死/生,所以每只老鼠能消除的最大不确定性为 log2 ,所以至少需要 log100/log 2只老鼠。
拓展问题
有100只一模一样的瓶子,编号1-100。其中99瓶是水,1瓶是看起来像水的毒药。只要老鼠喝下一小口毒药,一天后则死亡。现在,你有2天的时间,你至少需要多少只老鼠才能检测出哪个号码瓶子里面是毒药?
在2天时间内,每只老鼠有三种结局:死/生死/生生,所以每只老鼠能消除的最大不确定性为 log3 ,所以至少需要 log100/log3 只老鼠。