用最少的杰瑞,测最多的“毒药”
原题是这样的,有64瓶药,其中63瓶是无毒的,一瓶是有毒的。如果做实验的小白鼠喝了有毒的药,3天后会死掉,当然喝了其它的药,包括同时喝几种就没事。现在只剩下3天时间,请问最少需要多少只小白鼠才能试出哪瓶药有毒?(出处:吴军 信息论40讲)
这道题在考察我们的如何组合信息,保证他高效传递,又不违背易辨识的原则。
二进制无处不在。为什么这么说呢?我们的生活就是无数bit的有序排列,小时候,读大学或者不读是一个bit,考研与不考研又是一个bit,读博还是不读博,工作或者不工作,结不结婚,买不买房……
对于小老鼠杰瑞来说,每一瓶毒药,它都有一次选择的机会:喝或者不喝。假设现在有x只杰瑞的小伙伴,我们现在把这个问题可以转变一下,可以更方便我们理解,那就是把这64瓶“美酒”分给每只小杰瑞品尝,要求每种“美酒”的分配方式各不相同,最少需要多少只小杰瑞来品尝才够分?对于x只小杰瑞来说,每一瓶“美酒”摆到它面前时,它都要选择喝或者不喝,每只小杰瑞的选择就是一个bit,所以这个问题就得到了简化:用多少bit的二进制数能表示出64瓶“美酒”?问题的答案就很简单了:6个bit