题目
小白鼠
有1000个一模一样的瓶子,其中有999瓶是普通的水,另一瓶是无色无味毒药。只要有微量毒药进入生物体内都会导致其在一星期之后死亡。现在,只允许你利用10只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?
金币
有10袋金币,但其中有一袋金币全是假的,已知一枚真金币10g,一枚假金币比真金币少1g。现在有一个电子秤可以称出物体的重量,秤范围和精度均足够,最少需要称几次才能知道哪袋是假金币?
天平
12个外观一致的小球,其中11个质量一致,1个质量稍稍不同。用一个无刻度的天平,能否只称3次找到这个小球?
解答
小白鼠
只利用10只小白鼠做实验,一个可行的想法是给每只小白鼠注射若干瓶中的液体,如果我们能巧妙的规划每个小白鼠注射哪几瓶的液体,那么就可以根据小白鼠的死亡情况推出哪瓶液体有毒。
我们先来看看这个思路是否可行:10个小白鼠一共能表达多少种不同的情况。一周后,每个小白鼠只有两种情况,生存或死亡,所以10个小白鼠一共有种情况。而1000瓶液体中只有一瓶有毒,只有1000种情况。所以用10个小白鼠的死活情况表达毒药的所有情况是非常有可能的。
我们将小白鼠的死亡情况和哪瓶是毒药的情况一一对应,就能反推出一个可行的注射方案。
死亡情况 | 哪瓶是毒药的情况 | 注射方案 |
---|---|---|
1号小白鼠死亡 | 1号瓶有毒 | 1号瓶注射给1号小白鼠 |
2号小白鼠死亡 | 2号瓶有毒 | 2号瓶注射给2号小白鼠 |
3号小白鼠死亡 | 3号瓶有毒 | 3号瓶注射给3号小白鼠 |
4号小白鼠死亡 | 4号瓶有毒 | 4号瓶注射给4号小白鼠 |
5号小白鼠死亡 | 5号瓶有毒 | 5号瓶注射给5号小白鼠 |
6号小白鼠死亡 | 6号瓶有毒 | 6号瓶注射给6号小白鼠 |
7号小白鼠死亡 | 7号瓶有毒 | 7号瓶注射给7号小白鼠 |
8号小白鼠死亡 | 8号瓶有毒 | 8号瓶注射给8号小白鼠 |
9号小白鼠死亡 | 9号瓶有毒 | 9号瓶注射给9号小白鼠 |
10号小白鼠死亡 | 10号瓶有毒 | 10号瓶注射给10号小白鼠 |
1、2号小白鼠死亡 | 11号瓶有毒 | 11号瓶注射给1、2号小白鼠 |
1、3号小白鼠死亡 | 12号瓶有毒 | 12号瓶注射给1、3号小白鼠 |
…… |
虽然有些麻烦,但终究能得到一个可行方案。当然,利用二进制的一些性质,我们也有办法得到一个更优雅的方案。
将每个瓶子的编号转换成二进制,在前面补0直到其拥有10位,将这10位和10个小白鼠对应,0代表不注射,1代表注射。
比如对于编号400,转为二进制0110010000,这表示给2、3、6号小白鼠注射第400号瓶中的液体。
一周后,将小白鼠死亡情况写成二进制,再转回十进制便是有毒的瓶子的编号。
金币
哪一袋为假金币只有10种可能性,而电子秤的称一次得到读数结果的可能性肯定远大于10,我们完全可以试试一次称出来。
从第1个袋子中取1枚金币,第2个袋子中取2枚金币,第3个袋子中取3枚金币……
如果全是真的,总重应为 10g×(1+2+…+10)=550g。所以如果实际称重结果少1g,意味着第1袋金币是假的;如果实际称重结果少2g,意味着第2袋金币是假的……
天平
蛮经典的题目,除了这题,还有简单版本的9个球或已知质量有问题的球是轻还是重。
每次称重的结果有3种,左边重、右边重、一样重。称3次一共有中可能性。而质量不同的小球可能轻或重,这是两种可能,其编号有12中可能,共2×12=24种可能。24<27,这说明是有可能找到可行方案的。
为了能在三次内找到这个小球,我们需要高效的方案。我们期望每次称完,都能排除2/3的可能性,即:第一次称完,只剩下8种可能;第二次称完,剩下2至3种可能;最后一次就能找到结果。
大家可以先尝试思考一下再继续看。
将球分成3组,每组四个,编号:(ABCD)(EFGH)(IJKL)。这样第一次称重完刚好排除2/3的可能性,其他方式的分组不能达到这种效率。
(ABCD)和(EFGH)称重,有三种情况:
- ABCD > EFGH:剩下A重、B重、C重、D重、E轻、F轻、G轻、H轻8种情况。
- 我们希望,下一次称完,能将可能性减少到2至3个。显然称重的素材应该从A-H中选。如果从中选取4个球,一边两个进行称重,那么一旦天平平衡,意味着有问题的球在剩下的4个球中,即剩下4种可能,这不符合我们的期望。继续思考发现可以从中选取6个球,一边3个进行称重,这样一旦天平平衡,意味着有问题的球在剩下的2个球中,即剩下2种可能。通过精心挑选小球并设计摆放位置,可以让天平在向左或向右倾斜时,都只剩下3种可能。
(ABE)和(CDF)称重:- ABE > CDF:剩下A重、B重、F轻3种情况。
- A、B称重即可。
- ABE < CDF:剩下C重、D重、E轻3种情况。
- C、D称重即可。
- ABE = CDF:剩下G轻、H轻2种情况。
- G、H称重即可。
- ABE > CDF:剩下A重、B重、F轻3种情况。
- 我们希望,下一次称完,能将可能性减少到2至3个。显然称重的素材应该从A-H中选。如果从中选取4个球,一边两个进行称重,那么一旦天平平衡,意味着有问题的球在剩下的4个球中,即剩下4种可能,这不符合我们的期望。继续思考发现可以从中选取6个球,一边3个进行称重,这样一旦天平平衡,意味着有问题的球在剩下的2个球中,即剩下2种可能。通过精心挑选小球并设计摆放位置,可以让天平在向左或向右倾斜时,都只剩下3种可能。
- ABCD < EFGH:剩下A轻、B轻、C轻、D轻、E重、F重、G重、H重8种情况。
- 和前面的类似,略
- ABCD = EFGH:剩下I重、J重、K重、L重、I轻、J轻、K轻、L轻8种情况。
- 如果我们将IJKL全用上,一边两个进行称重,显然不会出现平衡的情况,这导致一种可能性被浪费。如果我们从中挑取两个球进行称重,一旦天平平衡,就剩下了4种情况,也不行。我们可以从中选取3个球,再加入一个已知没有问题的小球,进行称重。
(AI)和(JK)称重:- AI > JK:剩下I重、J轻、K轻3种可能。
- J、K称重即可。
- AI < JK:剩下I轻、J重、K重3种可能。
- J、K称重即可。
- AI = JK:剩下L重、L轻2种可能。
- A、L称重即可。
- AI > JK:剩下I重、J轻、K轻3种可能。
- 如果我们将IJKL全用上,一边两个进行称重,显然不会出现平衡的情况,这导致一种可能性被浪费。如果我们从中挑取两个球进行称重,一旦天平平衡,就剩下了4种情况,也不行。我们可以从中选取3个球,再加入一个已知没有问题的小球,进行称重。