06|有效编码:10个手指能表示多少个数字?

信息编码的两个基本原理:易辨识和有效性;
用实例说明了信息论原理和我们工作的关系。

06|有效编码:10个手指能表示多少个数字?

之前讲了信息编码最简单的原理,现在谈谈如何设计一个好的编码系统,以及其背后的本质。这些原理,也可以用于提高我们日常的有效沟通。

大家知道,各种编码系统本身在信息论上是等价的,但是,不同的编码系统可以有好有坏。比如今天使用的阿拉伯数字(其实是印度人发明的)0~9就是一个很好的编码系统,对于描述数字信息来讲,它们的数量不多不少,形状差异大。

如果采用一个小圆点“∙”代表一,两个“∙∙”代表二,三个“∙∙∙”代表三,十个“∙∙∙∙∙∙∙∙∙∙”代表十,就不太好,因为大家容易看花眼。因此好的编码第一个特点就是要便于区分不同的信息。

中国在文革后曾经推行过一版过于简单的简化字,但是很快就停止使用了,这里面主要的原因是将汉字的笔画简化得过少后,使得近形字大量出现,不易辨识,非常容易搞混,因此很快就废止了,从信息论上讲,它违反了好编码要便于信息辨识的原则。

上述原则在平时的表达和沟通中也很重要。比如说,德国著名的营销专家和演说家多米尼克∙穆特勒提出的清晰表达的五个原则:明确、诚实、勇气、责任和同理心,前四条就和信息编码要便于识别有关。

第一个原则:“明确”,这就不用说了,它是沟通的核心。只有意思表达得明确,才能保证对方不误解。

很多专业文件都写得像八股文,无论是病例,律师写的法律文件,或者科学杂志上的论文,都是如此,其最根本的目的就是要确保意思表达无误,在同行中不会产生任何误解。

至于其他的三条原则“诚实、勇气、责任”,也是辅助将想法明确表达出来的。“诚实”是能够明确表述的基础,因为口是心非,难免会语焉不详。而“勇气”则代表对一件事的态度确定,因为只有内心非常确定,表达才能明确。至于“责任”,说的是代表对一件事要有所谓,如果对一件事持无所谓态度,说出来的话就一天一个样。

这就是第一个知识点,也就是信息编码的第一个基本原则:“易识别”,应用在我们个人沟通中,也是如此。

便于识别,不容易混淆只是编码的第一个基本要求。作为一种好的编码还需要做到“有效”。信号旗和信号臂都是有效的编码,通过一些图形或者动作的组合,能表达很多信息。

在信息传播上,只有当编码有效时才能在短时间里传递大量的信息。比如我们经常在谍战片中看到通过发电报传递信息,电报的电文都非常简洁,因为发报时间不能太长,否则很容易被对方发现,这其实符合有效性的原则。那么怎样做到有效编码呢?我们先来看这样一个问题:

用十根手指头,能表达多少个数字?

很多人觉得能表达十个数字,因为我们平时数数就是这么数的。也有人觉得可以表示100个数字,因为我们一个巴掌就能表示十个数字,将巴掌组合起来,一个表示个位,一个表示十位,就能表示从0到99共100个数字。这个想法非常好,能想到这层可以讲是多少体会了编码原理的精髓。

但是,这依然不是最有效的编码,如果我们考虑采用二进制,而不是十进制进行编码,则能表示1024个不同的数字。

具体的做法是这样的,我们把十个指头伸开:从左边的小拇指到大拇指编号为0~4,再从右边的大拇指到小拇指,编号为5~9。这十个指头,每一个都有伸出、收起两种状态。每一种状态对应于一位二进制,十个指头能表示10位2进制,因为10个指头,每个指头有两种情况,就是2的10次方,也就是1024种可能性。

当然有人说,能不能让每个手指具有伸开、半伸开和收缩三个状态,表示59049,也就是3的10次方种种可能性呢?这种想法不能说有错,但是并不好,因为它过分强调有效性,而忽视了易辨识这个原则,凡事过犹不及。

这是第二个信息编码的原则:有效性。如何组合信息,保证它高效传递,还能不违背第一条“易辨识”的原则。这就需要大家主动思考了,下面介绍一个现实的例子来启发大家一下。

利用上述两个编码原则,可以有效地进行生物和IT产品的实验。硅谷的公司里有这样一道面试题:

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

很多人看了这个题目从直觉出发,直接答64只,每一只吃一种不同的药。这么做自然没有问题,但是并不有效。能不能减少老鼠数量呢?可以自己思考一下。

实际上解决这个问题只要六只小老鼠就可以了,这是一个641的题目,那么需要的信息量就是log64,也就是6比特。要是想具体操作验证,方法是这样的:

06|有效编码:10个手指能表示多少个数字?

说明:将一个十进制数除以二,得到的商再除以二,以此类推,直到商等于一或零时为止,然后依照倒序取除得的余数,即换算为二进制数的结果。比如32除以2,商是16,余数是0,然后再用商16除以2,得到余数0,以此类推,得到6个余数,再倒序排列,就是100000。要点是:除二取余,倒序排列。    

1.我们将这些药从0~63按照二进制编号,获得64个六位数的二进制编号,也就是从000000(六个零)到111111(六个一),每个二进制编号的最左边是第一位,最右边是第六位。

2.然后选六只老鼠从左到右排开,和二进制的六位,从左到右地依次对应。文稿里的二进制编号,可以试着一位一位竖着看,下面每只老鼠负责一位。

3.从左边数第一个老鼠吃对应的二进制是1的药,0就不吃。那么老鼠1依次吃第32,33,34,……,63号药。第二只吃16,17,……,31,48,49,……,63号药,等等。最后一只老鼠吃1,3,5,……,63号药。有人可能注意到了,6只老鼠都吃了63号,那是因为63对应的二进制编号是6个1,所以6只都要吃。

4.吃完药之后三天,某些老鼠可能死了,我们假定第1,2,6这三只老鼠死了,剩下的活着。这说明什么呢?说明编号110001号药有问题,也就是在第1,第2,第6位上分别是3个1,因为这三只老鼠都吃了它,而3,4,5这三只没死的老鼠没有吃它(对应的位置为0)。而110001对应十进制的49,也就是说第49瓶药是毒药。

对于其它的组合也是同样的,可以自己随便假定哪几只老鼠死了,看看哪瓶是毒药。当然,还有一种情况,就是所有的老鼠都没有死,那说明第0号药是毒药,因为其他的药都吃过了,就这一瓶没有吃。

通过上述方式,可以用6只小老鼠一次完成64选1的任务。怎么确定6只老鼠就足够了呢?结合我们前面讲到的理论,64选1的任务其实只需要log64=6,也就是6比特的信息就够了,每一只老鼠提供了一比特的信息。

因此,从理论上讲6只小老鼠就足够了,而有效的编码,其实就是完成从理论上的上限到现实中解决方案的桥梁。所以IT公司在招收计算机工程师中会考这道题,因为很多的IT问题,就是编码问题。

这是通过一道硅谷面试题,想传达的第三个知识点,也就是有效编码,其实就是让理论最佳值在应用中落地。

不仅如此,有效编码的思想在今天IT的产品性能比对测试中有直接的用途。我们在第3讲讲到大数据思维,其中很重要的一条就是采用大量用户反馈信息决定产品的设计和技术方案。

比如在一个产品中,有两种可用的方案,A和B,哪种更好呢?过去常常是工程师们和产品经理们拍脑袋想,有些时候某些人的“眼光”很好,正好蒙对了,选了一个用户也喜欢的方案,但是这种“眼光好”是无法复制的,一个公司将自己的商业成功寄托在“眼光好”上早晚要失败。

这时,就可以利用用户大数据评判A、B方案的好坏,通常的做法是随机选取1%的用户作对比实验。比如Google在改进搜索算法或者其它产品体验后,会先做这样不公开的测试,一般会持续一周左右。但是像Google这样有好几万工程师的大公司,每天的各种改进是很多的,如果每个项目都用掉1%的用户,把全部用户都用上也不够。

这就回到了我们刚才学过的高效编码问题,用少量用户同时进行很多个实验的方法,就类似上面这种让小白鼠试毒药的方法,也就是将各种不会发生冲突的实验用二进制进行编码,几组实验者,就可以同时进行几十个不同的实验。

要点总结

1.信息编码的两个基本原理:易辨识和有效性;

2.用实例说明了信息论原理和我们工作的关系。

知识学习了之后只有真正使用了,才能变成自己的东西。信息论是不少大学里通信专业研究生的必修课,学的人很多,但是绝大部分人学了以后也就扔一边了,少数人则在工作中刻意使用它,最后就做出了很多别人没有得到的成就。因此学以致用比多学习更重要。

06|有效编码:10个手指能表示多少个数字?

原创文章,作者:Xaiat超级会员,如若转载,请注明出处:https://www.xaiat.com/06%ef%bd%9c%e6%9c%89%e6%95%88%e7%bc%96%e7%a0%81%ef%bc%9a10%e4%b8%aa%e6%89%8b%e6%8c%87%e8%83%bd%e8%a1%a8%e7%a4%ba%e5%a4%9a%e5%b0%91%e4%b8%aa%e6%95%b0%e5%ad%97%ef%bc%9f/

(0)
Xaiat的头像Xaiat超级会员管理员
上一篇 2023年11月26日 09:16
下一篇 2023年11月27日 09:46

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

Xaiat 人工智能艾特 让人人更懂AI