书城科普读物探索未知-读故事谈数学
45047900000008

第8章 煮酒论英雄(2)

《三国演义》第46回写诸葛亮草船借箭之后,入寨来见周瑜。周瑜又故意向诸葛亮请教破曹的策略。诸葛亮推辞说:“我乃碌碌庸才,哪里能有什么妙计。”周瑜说:“我昨天观察曹操的水寨,非常严整有法,不是等闲的办法可以攻破的。想到一个计策,不晓得能不能用,请先生为我作一决断。”诸葛亮便提议:“都督先不要讲出来,我们各自把所想的计策写在手掌中,看看相同不相同。”于是两人都在手心中写下计策,互相交手一看,都是一个“火”字。于是两人都大笑起来。

第49回写周瑜突然生病,诸葛亮前往探视。诸葛亮看出周瑜并非真的有病,便请问:“都督为何贵体欠安?”周瑜回答说:“人有旦夕祸福,岂能自保?”孔明马上知道了周瑜生病的原因,便笑道:“天有不测风云,人又岂能预料呢?”周瑜一听大惊失色,知道诸葛亮已经了解自己“生病”的原因了。只好继续装糊涂请诸葛亮开个药方。诸葛亮便给周瑜开了一个密方:“欲破曹公,宜用火攻。万事俱备,只欠东风。”至此,周瑜已无法再隐瞒下去,只好将自己的心思,和盘托出,诚心请诸葛亮帮忙。当诸葛亮表示可以帮周瑜祭东风以烧曹兵时,周瑜一方面为解决了火攻的最大难题而高兴,另一方面又感到诸葛亮处处超过自己,一定要把他杀掉,不能留下后患。但是周瑜的阴谋并没有逃过诸葛亮的眼睛,料定在东风祭起之后,周瑜一定会派人来杀他;所以事先就周密安排好了祭完东风之后从七星坛上逃走的计划。周瑜却蒙在鼓里,一点也没有察觉。周瑜派去捉杀孔明的大将徐盛、丁奉眼睁睁地看见诸葛亮从容地逃回江北去了。

这一连串的故事表明,对于处于对立的双方而言,信息有三种不同的情况:第一种是绝对对称的,即一方知道的信息,对方也必然知道。东汉时期,有一个名叫杨震的人,做过荆州刺史、涿郡太守、司徒、太尉等大官。有一天晚上,一个人向他行贿,遭到拒绝。行贿者误以为是杨震害怕受贿行为暴露而不敢收贿,便说:“深更半夜不会有人知道的。”杨震回答他说:“怎么无人知道呢?天知,地知,你知,我知!”对于行贿这一信息,行贿者和受贿者总是你知我知的。这就是绝对对称的信息。赤壁之战前夕,曹操与孙刘联军双方的各种情报,对周瑜和诸葛亮两人来说,都是你知我知的,属于第一类即绝对对称的信息,所以他们不约而同地做出了火攻的决策。

第二种信息是非对称的,即一方掌握的信息,对方不知道或者不完全知道。例如诸葛亮从七星坛逃走的计划,周瑜就一点也不知道。这就是一种非对称的信息。

第三种信息介乎两者之间。这种信息双方都了解一部分,却又不完全了解。但只要一方掌握了某些内容而有所反映时,另一方马上就可分析对方的表现而使自己也掌握该内容,甚至更前进一步。原来的一方又可以根据后者的表现再向前推进。这样双方螺旋式地向前推进,最终都能了解全部信息。《三国演义》第49国关于诸葛亮到周瑜寨中探病的一段描写,就是第三类信息的表现。唯有这一类信息最需要双方斗智斗勇。

美国斯坦福大学的麦卡锡提出了一个模态逻辑趣题,正是这第三种信息的例子:有两个自然数m,n满足条件2≤m≤n≤99。S先生只知道这两个数的和s,P先生则只知道这两个数的积n。两人都不知道m、n具体是多少。后来,他们两人进行了如下的对话:S:我知道你不知道这两个数是多少,但我也不知道。

P:现在我知道这两个数了。

S:现在我也知道这两个数了。

请问根据已给出的条件和这两位先生的对话,你知道这两个数是多少吗?

让我们从所提供的信息进行分析:

信息F1:s必不能分拆为两个素数之和。

不然的话,因为m,n有可能恰好就是这两个素数。P先生既然知道两数之积n,这时n只有一种分解式,P先生会马上知道m,n是多少,S先生决不能断言P先生也不知道这两个数。

信息F2:s不能是偶数。从而m与n必为一奇一偶。不然的话,因m与n之和s小于200,我们知道哥德巴赫猜想对2以上200以下的偶数都是成立的。s如为偶数,必可分拆为两个素数之和,与信息F1矛盾。

信息F3:s不可能分拆为一个大于50的素数与另一偶数之和。

因为若t是大于50的素数,p必不能分解为p=m·(kt)的形式(其中k为整数,n=kt)。事实上,这时将有n=kt≥2×53=106与2≤m,n≤99矛盾。所以,n只能分解为n=t与另一整数m的乘积,既然只有一种分解形式,S先生就不能断言P先生不知道这两个数。

信息F4:s<54。

因为大于54的数都可以分拆成53与另一整数之和,与信息F3矛盾。又由信息F2,54是偶数,s也不能等于54。

综合信息F1~F4,可得到一个两人都掌握了的总的信息:信息D1(s):s是大于3而小于54的奇数,并且没有由两个素数组成的分拆。

满足这一条件的数只有11个,把它们所成的集合记为A,则A是双方已共知的:A={11,17,23,27,29,35,37,41,47,51,53}接着P先生说:“现在我知道这两个数了。”P先生从不知道到知道,获得新信息的渠道与我们是一样的,也就是D1(s)。P先生之所以能得出m,n,是因为他掌握集合A之后,把他知道的乘积P分解为两个整数之积后,各种可能的分解中,只有一种其两个因数之和s属于A。换句话说,他提供了信息D2(p):只有唯一的一对整数m,n,使mn=p,且m+n∈A。

最后S先生说:“现在我也知道这两个数了。”S先生之所以能这样说,是因为他知道s,只有唯一的一种分拆法能满足D2(p)。即S还掌握了信息:信息D3(s):s只有一种分拆法,s=m+n,使mn=p,而p能满足D2(p)。

S先生掌握的信息与我们一样,于是我们只要根据信息D2(p)和D3(s)来检查集合A中的每一个数,就可找出m,n。

首先注意,若A中的数s能写成s=2k+q(其中k≥2,q为素数),则形如p=2k·q的数n一定满足D2(p)。因为n除了n=2k·q这种分解因式外,其余的分解形式,两个因数都必是偶数,其和s也是偶数,不能属于A。所以n满足D2(p)。根据这一结论,若A中的数s可用两种方式写成2k+q的形式,就不能满足D3(s)。

因为11=23+3=22+7,23=22+19=24+7,27=22+23=23+19,35=24+19=22+31,37=23+29=25+5,47=24+31=22+43,51=22+47=23+3,A中这7个数都不能满足D3(s),应予排除。S先生所掌握的两数之和s只能是A中乘下的17,29,41,53四个数中之一。

s≠29。因29=24+13=12+17。p1=24×13=208满足D2(p)。而12×17=204=p2,因204的其它分解只有204=3×68=6×34=4×51=2×102,其中6+34,2+102为偶数,4+51,3+68都大于54,均不属于A。即204只有一种分解,使其两因数之和属于A,从而满足D2(p)。因而29不满足D3(s),应予排除。

s≠41。因为41=22+37=25+9。p1=22×37=148满足D2(p)。而p2=9×32=288的其它分解式只有288=2×144=3×96=4×72=6×48=8×36=12×14=16×18,其中3+96>54,其余各种分解的两个因数均为偶数,故只有p2=9×32满足D1(s),从而满足D2(p)。p1=108,p2=288都满足D2(p),所以41不满足D3(s),也要排除。

S≠53。因为53=24+37=25+21。p1=24×37满足D2(p);P2=21×32=672,除了21×32外,672的其它任一分解,两因数之和都大于54,故672也满足D2(p),从而不满足D3(s),也要排除。剩下的只有17了。易于验证17满足D3(s)。

17=2+15=3+14=4+13=5+12=6+11

=7+10=8+9

因为2×15=30,30=2×15=5×6,而2+15=17,5+6=11都属于A,所以不满足D2(p)。

类似地可排除3+14,5+12,6+11,7+10,8+9。

剩下4+13。4×13=52,52的分解式只有两种:52=2×26=4×13,但2+26=28不属于A。于是52满足D2(p),17满足D3(s)。

所以,这两个数是m=4,n=13。