试毒问题非常经典,最早是在本科时候人人上看到的,是最基础的1000个试剂,有一个是有毒的,一点就会死去,而且一个小白鼠只能试一次,问最少几个小白鼠能够找出哪瓶是有毒的。后来陆陆续续又看到了一些关于这方面的题,发现这个本质上相当于信息论中关于信息编码长度的问题。
通用方法是讲试剂中哪瓶是毒品的信息总数表示出来为N,然后再找出小白鼠所能表示的状态数目为M,则需要的小白鼠个数为: K=logNM
而具体实验的操作方法为:
- 讲每种状态按照M进制进行编码,编码长度为K
- 每个小白鼠分别去拿自身的M中状态去实验N的M进制编码的某一位
- 所以K个小白鼠,等同于是K长度M进制的对应的每一位
- 这样试验完后,就确定了每一位上面的数字,找到对应的那种状态就好。
初级版问题——每只只能试一次
就是引言中说的小白鼠那个问题。
因为每个小白鼠只够去试一次,所以,每只小白鼠身上有两种状态——死亡或者存活
而试剂中有毒的信息量为1000,即每瓶试剂都有可能有毒。
所以需要的编码长度为: lo