【硅谷面试题】->关于信息编码和信息熵

今天分享一个吴军在他的信息论课程中提到过的一道题,硅谷的很多公司都考过这道题,原理也很简单,只是运用了信息熵公式和两个基本的编码原则。

问题描述

有64瓶药,其中63瓶是无毒的,一瓶是有毒的。如果做实验的小白鼠喝了有毒的药,3天后会死掉,当然喝了其它的药,包括同时喝几种就没事。现在只剩下3天时间,请问最少需要多少只小白鼠才能试出哪瓶药有毒?

给你个空白让你思考几秒钟

思考……
……
……
……
……
……
……

答案

最少需要六只小白鼠

解题步骤如下:

这是一个64选1的题目,根据信息熵公式,需要的信息量就是log264 = 6,也就是6比特。现在我们进行验证。

  1. 我们将这些药从0 ~ 63按照二进制编号,获得64个六位数的二进制编码,也就是00 0000 到 11 1111, 每个二进制编号的最左边是第一位,最右边是第六位。
  2. 然后选六只小白鼠,从左到右排开,和二进制的六位,从左到右依次对应。左至右分别为老鼠1号至老鼠6号。
  3. 从左边数第一个老鼠吃对应的二进制位为1的药,0就不吃。那么老鼠一号依次吃第32, 33, 34, ……, 63号药。第二只吃第16, 17, 31, ……, 48, 49, ……, 63号药,等等。最后一只老鼠吃1, 3, 5, ……, 63号药。就这样,最后六只老鼠都吃了63号药,因为63的二进制是11 1111。
  4. 吃完药后三天,有些老鼠死了,我们假定1, 2, 6这三只老鼠死了,剩下的活着。这说明编号11 0001号药有问题,即49,所以第49号药是毒药。
  5. 如果所有的老鼠都没有死,那就说明第0号药是毒药,因为没有老鼠吃那瓶药。
发布了18 篇原创文章 · 获赞 41 · 访问量 4086

猜你喜欢

转载自blog.csdn.net/qq_45627684/article/details/104332217
今日推荐