问:1000瓶药有1瓶有毒,如果小白鼠服用有毒的药,则24小时后死亡。现在需设计一种策略,使用尽可能少的小白鼠,在24小时内找出有毒的药。
思路:
可以先考虑简单的情况: 喝了毒药之后马上死亡,要求用最少的喝药次数找到毒药:
第一次: 将1-500瓶兑在一起喝。
如果老鼠死了,则拿另一只老鼠去品尝501-725瓶兑的药水。否则去喝2-250瓶兑的水。
采用如此二分法,因为2^10>1000 2^9<1000,所以10次就可以找出。
现在回到原题,老鼠会在24小时后死亡,这样的化就不能跟去前一次的结果作出决策。但是可以覆盖二分的所有支路,在24小时后,一次性作出判断。
相当于将串行的二分法,改为并行的二分法。
具体如下:
第一只: 喝 1-500
第二只 1-250 500-725
第三只 1-125 250-375 500-625 725-850
....
因为2^10>1000 2^9<1000
所以最少需要10只老鼠。
伟大的二分法!