问题描述:
有12个鸡蛋,其中有一个是坏的,坏蛋不知道比好蛋是重还是轻。现有一个天平,请问称几次一定可以找到坏蛋。
先给答案:
3次
理论推导:
具体实现:
如何思考:
什么是信息量
正如理论推导部分,我们知道:12个鸡蛋谁是坏的这个问题的不确定性,小于三次天平称量能够消除的不确定性(或者说三次天平称量结果带来的信息量,大于12个鸡蛋中有一个是坏的信息量)。所以它理论上有解。
关于什么是信息量,这里谈谈自己最浅显的理解:(根据后面公式)一个事件的信息量等于它发生概率取log再取负数。也就是说它发生的概率越小,所包含的信息量就越大。
回到本题,12个鸡蛋是坏的,一共存在24种情况(1号重了、1号轻了、2号重了……),每一种发生的概率都是1/24,也就可以求出他的信息量了。同理,称三次,每次三种结果(左偏、不偏、右偏),理论上一共存在27种情况(左左左、左左不……)
怎么设计方案
知道了理论上有解,那该怎么称?看到题目后大家应该也都思考过,还是有一定难度的。
最核心的就是:每次称完后仍然需要能够满足信息量理论
第一称
比如说我一开始用1、2、3、4、5、6和7、8、9、10、11、12称,那么称完后,24种情况变成了12种。如果第一次称完左偏(右偏也一样,不可能不偏),那么要么是前6个某一个重了,要么是后6个某一个轻了。 这个时候我还剩2次称量,最多能提供log9的信息量,就寄了。
按照这种思路,我们不难发现应该分成三堆,1234、5678、9十勾圈。这样前两堆称完,如果左偏,说明要么是1234重了,要么是5678轻了,一共8种情况。如果是不偏,说明9十勾圈重了或者轻了,也是八种情况。那么就完成了第一称的使命,后两称理论有解。
第二称
这也是最关键的一称,称完这一称,只能剩3种情况,不然最后一称无法解决。
比如说,假设第一称后,1234和5678一样重,问题就在9、10、11、12。如果这时候设计9、10和11、12称,那称完一定是四种情况——左偏的话,要么9、10重了,要不11、12轻了。这样就不行。
这里确实是需要多进行一些尝试的,再贴一张试错过程
比较困难的是1234和5678不一样重的时候,尝试后我发现,需要在第二称的时候将其中一方(1234或5678全部用上)可以是1、2、3、5和4、9、10、11也可以是12356和4、9、10、11、12
这样就能保证该称称完后,无论是左偏右偏还是不偏都只有三种以内情况。
第三称:
这时候问题变得很简单了,只有两种情况
(1)知道三个球其中之一有问题,并且也已经知道是重了还是轻了,这时候只用随机选两个称就行了。
(2) 知道一个球有问题,但是不知道是轻了还是重了,这时候就用一个正常的和他比较。
总结:
这个问题来自于我刷到的一个抖音,当我给出理论推导后,收到了一些网友的反馈,有一条说道,“第一次见理论用到实际,原来学的不是一点没用呀”,比较触动,于是就有了写这一篇博客的想法。感谢看到这里,祝愿我们都能学有所获~