信息论的简单应用

转载地址:http://blog.sciencenet.cn/blog-677221-669159.html

我在帖子“大将军数学题2-答案”中,出了一道有关用老鼠检测毒药瓶的附加题:

 

100只一模一样的瓶子,编号1-100。其中99瓶是水,一瓶是看起来像水的毒药。只要老鼠喝下一小口毒药,一天后则死亡。现在,你有7只老鼠和一天的时间,如何检验出哪个号码瓶子里是毒药?

 

这儿把它叫做‘问题1’,解决此题的方法可谓二进制应用的经典:

 

首先,将瓶子的10进制编号数改成7位的2进制码。然后,让第1只老鼠喝所有2进制码第1位是1的瓶子中的水;让第2只老鼠喝所有2进制码第2位是1的瓶子中的水;以此类推下去。这样,每个老鼠第二天的死活情况就决定了毒水瓶子二进制码这一位的数字:老鼠死,对应1,反之为0。换言之,将7只老鼠死活情况排成一排。比如说结果是“死活死死活活死”的话,毒水瓶子的二进制标签就是:1011001,转换成10进制,得到89。

 

这道题可以有很多种在各个参数方向的扩张和一般化。最“通---通”的解够你研究好一阵子。比如,如果我们把题目稍加变化(问题2):

 

100只一模一样的瓶子,编号1-100。其中99瓶是水,一瓶是看起来像水的毒药。只要老鼠喝下一小口毒药,一天后则死亡。现在,给你2天的时间,请你告诉我,你至少需要多少只老鼠,才能检验出哪个号码瓶子里是毒药?

 

比较原来的题目,这个题目有两个变化:一是给你的时间多了一天。因为老鼠喝毒药1天之后死去,2天意味着你可以做两次实验,这给了你一个时间方向(实验次数)的空间,有可能让你用更少数目的老鼠,达到同样的目的。

 

第二个改变是提问的方式。这次的问题是:你‘至少’需要多少只老鼠?回答这类问题,是只要估计一个下限,对你来说,做实验的小白鼠多多益善,但你的老板要花钱买它们,他得考虑经济效益。当你还没有完全把方案想清楚之前,你好歹给老板一个交代呀。这种时候,信息论能派得上一点用场。

 

刚才我说‘信息论’,实际上,我们完全用不上什么信息论的任何高深理论,用的只不过是由香农定义的计算信息量的一个公式而已。牛刀杀鸡虽然太大,但用它锋利的小尖给开个小口也未尝不可。

 

不仅仅是这道题,还有几星期前科学网讨论热烈的“称球问题”,都是能用此‘牛刀’而有所受益的。实际上,我认为,许多问题的解决,都能和这‘牛刀’沾上边。如果从‘信息’的角度来分析某些问题,可以使你更登高望远,对问题能有更深层的理解,更容易融合各学科的间隙,达到借他山之石而攻玉的效果。

 

科学(不仅限于数学)上的大多数研究,说穿了就是一个处理‘信息’的过程。摈弃无用的信息,想办法得到有用而正确的信息,用以消除原来课题中的不确定性,得到更为确定的科学规律。

 

那么,我们首先要明白,什么是信息?

 

这是一个古老的问题,又是一个现代的问题,也是一个迄今为止仍然众说纷纭、悬而未决的问题,特别是在社会所认可的广义信息的层面上。

 

你要是问:“什么是信息?”,人人都能列出一大串他称之为‘信息’的东西:新闻、消息、音乐、图片……。然而如果问:“信息是什么?”那就难以回答了。因为你可以说:“音乐是信息”,但你不能说:“信息是音乐”;你可以说:“照片是信息”,但你不能说:“信息是照片”。要给信息下个定义是不容易的。‘信息’的定义需要从许多具体信息表现形式中抽象出它们的共性来。

 

中国古人理解的信息其实很简单,正如李清照的名句中所述:“不乞隋珠与和璧,只乞乡关新信息。”,看来这只是通俗意义上的‘音讯’或‘消息’而已。

 

现代人比较考究,注重科学。因此而成天琢磨:信息到底是什么?信息是主观的还是客观的?是相对的还是绝对的?

 

昨天北京发大水,你将这个消息,用电话告知你南京的两个朋友,可是,A说他早知此事,B原来不知晓,因此,这条消息对A来说,没有增加任何信息,对B来说就增加了信息。B抱着的小狗好像也听见了电话中的声音,但它不懂人的语言,这对它来说也不是信息。

 

信息是模糊的还是精确的?

 

你走到树林里,艳阳高照、和风习习、桃红李白、燕飞鸟鸣,大自然传递给我们许多信息,这些算是没有精确度量过的、模糊的信息。

 

信息和‘知识’是一码事吗?也应该不是。众所周知,我们的信息化社会虽然充满了信息,但其中“鱼龙混杂,良莠不齐”,以至于大家都希望自己的孩子不要整天沉迷于网上,许多人抱怨:“信息虽发达,知识却贫乏”。所以,信息并不等同于知识!

 

文学家、哲学家、社会学家……,各家各派都对‘信息’ 有不同的理解和说法。这其中,物理学家们,是如何理解和定义信息的呢?

 

物理学家们的研究对象是物质和物质的运动,即物质和能量。在他们看来,信息是什么呢?是否能归类进这两个他们所熟悉的概念呢?

 

信息显然不是物质,它应该是物质的一种属性,听起来和能量有些类似,但它显然也不是能量。物理学中的能量早就有其精确的、可度量的定义,它衡量的是物体(物质)做功的本领。信息与这种‘功’似乎无直接关联。当然,我们又知道,信息是很有用的,个人和社会都可以利用信息来产生价值,这不又有点类似于‘做功’了吗?对此,物理学家仍然摇头:不一样啊,你说的好像是精神上的价值。

 

信息属于精神范畴吗?那也不对啊,从科学家们的眼中看来,信息,仍然应该是一种独立于人类的主观精神世界、客观存在的东西。因此,到了最后,有人便宣称说:

 

“组成我们的客观世界,有三大基本要素:除了物质和能量之外,还有信息。”

 

美国学者、哈佛大学的欧廷格(AGOettinger)对这三大基本要素作了精辟的诠释:

 

“没有物质什么都不存在,没有能量什么都不会发生,没有信息什么都没有意义。”

 

尽管对“信息是什么?”的问题难有定论,但通过与物理学中定义的物质和能量相类比,科学家们恍然大悟:信息的概念如此混乱,可能是因为我们没有给它一个定量的描述。科学理论需要物理量的量化,量化后才能建立数学模型。如果我们能将‘信息’量化,问题可能就会好办多了!

 

于是,在二十世纪40年代后期,一个年轻的科学家,后来被人誉为信息和数字通讯之父的香农,登上了科学技术的历史舞台。

 

香农的两大贡献:一是信息理论、信息熵的概念;另一是符号逻辑和开关理论。香农的信息论为明确什么是信息量概念作出了决定性的贡献。感谢香农,在定量研究的科学领域中,他将原来模模糊糊的信息概念,天才地给以了量化,使我们大家在解数学问题时也能‘牛刀小试’。

 

其实香农并不是给信息量化的第一人,巨人也得站在前人的肩膀上。1928年,哈特利(R.V. H. Harley)就曾建议用N log D这个量表示信息量。1949年,控制论创始人维纳将度量信息的概念引向热力学。1948年,香农认为,信息是对事物运动状态或存在方式的不确定性的描述。并把哈特利的公式扩大到概率pi不同的情况,得到信息量的公式:

 

  H=-pi log pi

 

如果计算中的对数log是以2为底的,那么计算出来的信息就以比特(bit)为单位。

 

根据香农的信息概念,信息能消除不确定性,而我们在解决数学题的时候,也是要消除不确定性,得到确定的答案。并不仅仅是老鼠问题和称球问题如此,我认为大多数问题都多少是一个‘消除不确定性’ 的过程。因此,我们为何不借用香农的工具,研究研究我们的问题有多少不确定性呢?也就是说,需要多少信息量才能解决这个问题?另外,根据题目所限制的手段,最多能够得到多少信息量?有无可能完全解决这个问题?等等。

 

具体到老鼠和毒药的问题。100瓶液体中1瓶有毒,每1瓶发生有毒的概率是1/100,这时候要确定毒药瓶所需的信息量H = -(p1logp1+p2logp2+….+p100logp100)

 

因为所有瓶子完全相同,这是一个等概率问题,p1 = p2 =…=p100 = 1/100

 

得到H=-log1/100)。

 

下面计算从老鼠能得到的信息量。

 

首先考虑问题1,即给定时间为1天的情况。一天后,每只老鼠或死或活,因此,能够提供1比特的信息。7只老鼠则能提供7比特的信息。

 

再看看刚才列出的确定毒药瓶所需的信息量H的公式:H=-log1/100<  -log1/128= 7比特。

 

因此,问题1应该可以解决。这个可能性是信息论提供给我们的。实际上,应该不仅仅是可能性,这种计算信息量比特数的方法能启发我们的思维。在解题时,学习别人解题的方法固然重要,而探讨别人是如何想到这种方法的,可能更为重要。在《大将军数学题2》的讨论中,就有博友说,如果提到2进制,此题就容易了。的确如此,如果不想到2进制,对此题往往好像有点束手无策,不知如何下手。

 

我们再来讨论问题2

 

所需要的信息量H的计算是和问题1一样的。然而,从每只老鼠能得到的信息量的计算,却可能会有所不同。这儿我用了‘可能’两个字,是因为我们还丝毫未曾谈及如何解决这个问题2

 

问题2和问题1的差别是在于老鼠可以参加接连两次实验。问题1中,只能做一次实验时,老鼠有两种状态:死或活。因此它可利用的信息量是1比特。如果能做两次实验,两次实验中都有生死的可能性,仅就逻辑而言,老鼠有四种可能情况:生生、生死、死生、死死。但其中的第三种情形:死生,是不可能发生的,因为在第一天的实验中死了的老鼠,不可能在第二次实验后又活过来。所以我们要将第一天实验中死了的老鼠,排除在第二次实验之外。所以,对问题2,老鼠有3种状态,每种状态的概率为1/3,因此,从一只老鼠得到的信息量

 

S=-1/3log1/3+ 1/3log1/3+ 1/3log1/3))= log3)。

 

如果将这儿的对数取以3为底的话,可以说成,每只老鼠能得到的信息量是一个3进制位(trit)。

 

多少只老鼠才能使总信息量大于log100)呢?

 

解方程:k*log(3)>log(100)  =>  3**k>100,可得到k>=5

 

因此,至少要5只老鼠,这便是问题2的解。

 

问题2直接所问的问题已经有了答案:实验至少需要用5只老鼠。况且,理论上来说,从5只老鼠能提供的最大信息量,转换到可能检验的最多瓶子数:3**5 = 243,已经大大地超过了100,余量很多,将这个数目提供给老板,问题不大。

 

但是无论如何,5只老鼠到底能否判定出有毒的瓶子,还需我们想出具体检验的方案才成定论。

 

因此,我们继续思考问题3(问题2的延伸):在能做两次实验的条件下,如何找出有毒的瓶子?

 

沿着刚才信息量计算的思路,问题1最优答案用2进制有关的实验方法得到;问题2中估计老鼠数目的下界时,用到了3进制。那么,在能做两次实验的条件下,找出有毒的瓶子的最佳方案是否与3进制有关?

 

试试看吧。首先,将瓶子的号码转换成5位的3进制。为什么是55只老鼠?对,由于同样的原因,最大的号码100需要用‘5位的3进制’来表示。这10053进制码列表如下:

 

00000

00001

00002

00010

00011

00012

00020

00021

00022

…………

10201

 

然后,第一次实验:

从左到右:让第1只老鼠喝所有3进制码第1位是2的瓶子中的水;让第2只老鼠喝所有3进制码第2位是2的瓶子中的水;以此类推下去。这样,每个老鼠第二天的死活情况就决定了毒水瓶子3进制码这一位的数字是不是2:老鼠死,2;老鼠活,1或0。

 

第一次实验中死去的老鼠没有白死,它的死决定了毒水瓶3进制码的这位数字是2!虽然这个老鼠为2而牺牲了,但很幸运,这一位的数字也被决定了,我们也不再需要这只老鼠。嘿嘿,我们让这个老鼠作出了它的最大贡献,要不然,就不是最优化的方案了。

 

第一次实验中没死的老鼠也没有白白地冒险,也为我们提供了信息:毒水瓶子3进制码的这一位的数字肯定不是2!所以,我们可以将3进制码这位是2的瓶子去除,因为它们肯定无毒。然后……

 

第二次实验:

让没死的老鼠喝下所有3进制码的该位数字为1的瓶子中的水。这个老鼠一天后的死活情况便决定了毒水瓶子3进制码这一位的数字是1还是0:老鼠死,1;老鼠活,0。

 

这个问题可以此类推地扩展成更一般的问题:假设有n个瓶子,其中1个瓶子中的水有毒,实验的小白鼠喝了毒水1天后死去,给你i天的时间,k只老鼠。问n的最大值是多少?如何实验,才能检测出毒水瓶来。

 

答案:有i天的时间,你可以做i次试验,因为死了的老鼠不能继续试验,i次试验后,老鼠总共的可能状态有(i+1)个:

 

第1次就死去、第2次死、第3次死、……、第i次死、一直活着。

 

能检测的最多水瓶数n=(i+1)**k。检测方法:将所有瓶子用k位的(i+1)进制数编码,然后,遵循上面所述i=2类似的过程,i天之后,根据k个老鼠的状态,可以确定毒水瓶的(i+1)进制数值。

 

通过用信息论解老鼠喝毒药的这个简单练脑题,说明科学思维方法之重要性。

 

作为信息论应用于数学题的另一个例子,再来分析“称球”问题。

 

称球问题是说,用天平称k次,在n个球中找出唯一的一个重量不标准的次品球来,n最大是多少?如何找?有关这个次品球的说法,通常有3种变形:

 1. 已知次品球是更轻(或更重);

 2. 不知次品球的轻重,找出它并确定轻重;

 3、不知次品球的轻重。

 

利用信息熵的概念,可计算出这3种情形下n的最大值,并且帮助思考构成算法的过程:

1. 已知次品球是更轻(或更重),这时n的最大值 = 3**k;

2. 不知次品球的轻重,找出它并确定轻重,这时n的最大值 = (3**k-3)/2;

3、不知次品球的轻重,这时n的最大值 = (3**k-1)/2。

 

下面首先分析第1种问题。为解释起来更为直观,设定k=3。换言之,我们的问题是:如何用天平称3次,从27个球中找出唯一的那个稍轻的球?

 

27个球中只有1个球稍轻,可能发生的情形为27种,每个球为次品的概率是1/27。类似于上面所说老鼠试药的问题,要确定是‘哪一只’老鼠,所需的总信息量=log27。

 

在此题中的判定手段,限制了是天平。那么,天平每称一次,最多可以提供多少信息量呢?或者是说,可以为解题消除多少不确定性?

 

天平称一次后,有3种结果:左轻右重(A)、左重右轻(B)、平衡(C)。因此,称一次所消除的不确定性=log3。接连称3次后,所消除的不确定性=3*log3= log27。

 

根据刚才的分析,这个问题中,判定轻球所需的信息量与天平称3次能获得的信息量刚好相等。因此,用最佳的操作方法,有可能解决这个问题。

 

既然从信息论作出的估算给了我们解决问题的希望,我们就试试看吧。

 

天平似乎与3进制有关,我们便首先优选3进制。将27个球贴上3进制码的标签:

 

000、001、002、010、011、012、020、021、022、

100、101、102、110、111、112、120、121、122、

200、201、202、210、211、212、220、221、222。

 

将3进制码中,第1位(左)为0的9个球放天平左边,第1位为1的9个球放天平右边,称1次。如果天平平衡,则次品球3进制码第1位是2;左轻右重,第1位是0;左重右轻,第1位是1。总而言之,称这一次,确定了次品球3进制码第1位的数字。

 

接下去,继续称,逐次确定次品球3进制码各位的数字,问题解决了。这个第1类问题不难推广到任意k的情形。

 

下面再分析第2类称球问题:次品球不知轻重,最后需确定轻重的情况,具体来说就是,天平称3次,要找出12个球中那个唯一的又‘不知轻重’的次品球。

 

将两个问题对比一下,共同之处是都用天平,因此,天平称3次能提供的最大信息量仍然是log27。不同之处是如何计算找出次品球所需要的信息量。

 

因为现在要找出的次品球‘不知轻重’,因此,对每个球来说,不确定性增多了,这也是能判定的球的数目大大减少了(从27变到12)的原因。

 

现在,考虑这12个球,其中一个是或轻或重的次品的各种可能性。如果这个球是‘轻’的次品,记为-,‘重’的次品,记为+,因此,可能的次品分布情况:

 

1+、1-、2+、2-、……、12+、12-。

 

共24种情形,所需要的信息量则为log24。这个值小于天平称3次所能提供的最大值,所以,可能有解,那我们就试试看吧。有人说,你用什么信息论扯了半天,最后还是要一个一个地列举,那你这信息论不是多余的吗?科学定律是客观的,但各人的观点却是见仁见智的,我不需要去强人所难,也并非想比较解称球问题各种方法孰好孰坏,孰优孰劣,只是想将信息论用于分析此题,如此而已。

 

将12个球作如下编码:

 

(000+,000-)、(001+,001-)、(010+,010-)、(011+,011-)、

(100+,100-)、(101+,101-)、(110+,110-)、(111+,111-)、

(200+,200-)、(201+,201-)、(210+,210-)、(211+,211-)、

 

这儿,除了抽取了部分3进制的编码之外,还对每个球都给贴上了(+、-)两个标签,以表明此球‘或轻或重’而成为次品的两种可能性,也可等效于另一层编码。

 

然后,将第1位为0的4个球(第1行)放天平左边,第1位为1的4个球(第2行)放天平右边,称第1次。

 

1 如果天平左轻右重,这也许是第1行中的某个球轻了、或是第2行中某球重了而造成的:

000-、001-、010-、011-、100+、101+、110+、111+。

 

2 反之,如果天平左重右轻,也许是第1行中的某个球重、或是第2行中某球轻而造成的:

000+、001+、010+、011+、100-、101-、110-、111-。

 

3 如果天平平衡,则次品球在第3行的‘毫不知轻重’的4个球(200、201、210、211)中。虽然是4个球,仍然有8种可能性:

200+、200-、201+、201-、210+、210-、211+、211-。

 

前面两种情形类似,都是将次品球限制到了 ‘半知轻重’的8个球中。所谓半知轻重,是因为该球有一个已经确定的附加标签(+或-)。

 

比如说,编码为(000-)的球是个‘半知轻重’的球,而编码为(000)的球是个‘毫不知轻重’的球。对(000-)来说,尽管尚未确定此球是否是次品,但有一点是明确的:如果它是次品的话,它只能是更轻的次品。而球(000)则有‘轻重’两种次品的可能性。

 

因此,‘半知轻重’球比‘毫不知轻重’球少了一半的不确定性。判定所需的信息量也成为一半。

 

天平不平衡的情形,问题成为,“称2次从这4个半知的‘轻球’,及4个半知的‘重球’中找出次品球”的问题。

 

为此,取2个轻球加1个重球放天平的一边,另2个轻球加1个重球放天平的另一边。称第2次之后便将问题归为称1次从3个半知轻重球中找出次品的问题。

 

这个问题在David J.C. MacKay信息论的书中有叙述,借他的图表贴在下面。其中称球的过程看得很清楚,所以不再赘述。

 

指出一点:在天平平衡的情形,称第2次时,需要用到称第1次后确定的标准球,即天平上的8个球。标准球是能够提供信息的,每个标准球在每次称量中最多能提供1比特的信息。

 

 

下面再对第3类称球问题稍加分析,就是,天平称3次,要找出13个球中那个唯一的又‘不知轻重’的次品球的问题。

 

类似于第2类问题,将13个球作如下编码:

(000+,000-)、(001+,001-)、(010+,010-)、(011+,011-)、

(100+,100-)、(101+,101-)、(110+,110-)、(111+,111-)、

(200+,200-)、(201+,201-)、(210+,210-)、(211+,211-)、(222+,222-)、

 

与第2类问题不同的是天平平衡的情况。这时需要从5个球,10种状态中找出次品:

(200+,200-)、(201+,201-)、(210+,210-)、(211+,211-)、(222+,222-)

 

将5球中的3个放在天平一边,3个标准球放另一边。天平不平衡情形的最后一次称法与第2类问题同,不同的又是天平平衡时的情形。

 

天平平衡的情形,留下了2个不知轻重的球。因为我们有标准球可用,取2个待定球中的任何一个与标准球比较,如果不平衡,此球则为次品,并知其轻重;如果平衡,另1球为次品,但不能判定其轻重。

 

读者可能注意到了,在上面两个用信息熵方法解数学题的例子中,我们经常说:“使用最佳方案”,只有使用最优化的操作方法,才能达到信息论所预期的上限。这儿所说的最佳方案,与信息论中的“最大信息熵原理”有关。

 

什么是最大信息熵原理?它来自于热力学及统计物理中的熵增加原理。要讲清楚这个问题需要太多篇幅,在此只简单地科普一下。

 

用通俗的话来说,最大信息熵原理就是当你对一个随机过程不够了解时,你对概率分布的猜测要使得信息熵最大。熵最大就是事物可能的状态数最多,复杂程度最大。换句话说,对随机事件的预测要在满足全部约束条件下,保留各种可能性。

 

比如,你的女朋友叫你猜猜她的生日是哪一个月?如果你曾经看过她出生不久的照片,是秋天,那你可以猜测她生日是夏季的几率比较大;如果你对此完全没有概念,你就最好是对一年中的每一个月都一视同仁,给予相同的可能性。

 

另一个例子是买股票投资的时候,专家会建议你买各种类型的不同股票。

 

“不要把鸡蛋放在一个篮子里!”投资专家说。这句话的意思,其实就是警告你要遵循最大熵原理,对难以预测的股票市场,最好的策略是尽可能多地保留各种可能性,才能降低预测的风险。

 

在本文中所举的老鼠毒药问题中,尽量让每个老鼠试喝相等数目瓶子的水;在称球问题中,尽可能使天平‘左、右、下’的球的数目相等,这都是考虑最大信息熵原理而选择的最优策略。

你可能感兴趣的:(算法)