当“十二个鸡蛋”问题遇上信息论

文章讲述了如何通过三次天平称量找出12个鸡蛋中唯一一个坏蛋的方法,强调了信息量理论在解决问题中的应用。作者逐步解析了称量策略,确保每次称量后信息量递增,最终确定了具体的设计方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:

        有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) 知道一个球有问题,但是不知道是轻了还是重了,这时候就用一个正常的和他比较。

总结:

        这个问题来自于我刷到的一个抖音,当我给出理论推导后,收到了一些网友的反馈,有一条说道,“第一次见理论用到实际,原来学的不是一点没用呀”,比较触动,于是就有了写这一篇博客的想法。感谢看到这里,祝愿我们都能学有所获~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值