奥数网
全国站
您现在的位置:奥数 > 小学数学网 > 数学故事 > 正文

《啊哈!灵机一动》-未入册的电话号码

来源:数学E网 2007-09-28 10:23:13

  猜测电话号码

  鲍伯领悟到通过对或错提问来判断一系列号码中某一特殊成员的最高效率的方法如下:假如这一系列号码中包含一个偶数成员,我们将它分成平等的两部分,每一部分包含相等数量的数字元素。假如这一系列的号码中包含一个奇数成员,我们仍将之分成两部分,两部分在数字元素的数量上尽可能接近。然后我们问这些“两部分”中哪一部分含有我们要找的成员,得到答复后,我们对指定的部分再重复同样的过程;最后,原始系列中只剩下了一个号码,它就是我们要找的那个。

  第一个提问显然是对于识别一个二元系列成员而言。第二个提问是对一个四元系列,第三个提问是对一个八元系列,第四次提问是对于一个十六元系列而言。推广到一般,第n次提问是对一个2n元系列而言。

  在猜测电话号码这个问题上,24次提问对猜测任意一个不大于224=16 777 216的数字都是足够的,因为224比9 999 999大,而9 999 999是当七位电话号码单独以数字形式出现数值最大的。然而因为223=8 388 608比一些可能的七位电话号码小,所以23次提问有时是不充分的。

  因此鲍伯的第一个提问是:“这个号码比5 000 000大吗?答案马上把7位号码中可能的号码砍掉了一半。按这种方式继续下去,他相信在经过24次或少于24次的提问中,一定能找出正确的电话号码。

  因为很多人没有领悟到数字成倍连续增长是多么快,所以他们很难相信在不多于24次这么少的提问中可以确定从1到甚至比16 000 000还大的数字中的任何一个数字。也正是由于这种增长的神速才使我们能够解释为什么通过“对和错”这种提问来猜测某人正在思考什么是这样的容易,而且此人的思考范围可允许在任何存在的物体范围内。如果你对二进制分割很熟练(比如:问一些类似这样的问题:“这是生物还是非生物?”“这是动物还是植物?”等等),你很可能在20次或不到20次提问中猜出比如某人正在思考自由女神头上的皇冠等一类事情。

  我们描述的通过24次提问猜测电话号码的过程被计算机专家们称为“二进制分割”算法。一个聪明的通过显示在图3―1的六张卡片来速算的窍门就是以“二进制分类”为基础的。方法如下:把这些卡片递给一个人并让他想定从1到63的任何一个数,然后让他给你上面有他所选数字的每一张卡片,你立刻就能识别出这个数。

  图3-1

  其实秘密很简单,就是把那人给你的每一张卡片上的第一个数都加起来,所得的和就是要找的那个数。

  这些卡片是按一个系统设计的。这个系统很容易通过后面图3―2附的把1到63按“二进制计数法”排列来解释。图表左侧的数字是十进制形式,每一个的右侧有它在二进制中相应的表示。

  图3-2

  图表表头的6个数字是用来形成二进制数字的2的乘方。以“1”开头的那张“速算卡片”上面的数字依次是图中最右一列中数值为1的行中所对应的十进制列中的所有数字。以“2”开头的卡片上的数字包含从右数第二列是1的行中所对应的十进制列中的所有数字。其它四张卡片也同样是通过上述过程得到。

  通过这些“速算卡片”很容易归纳出以大于2的数字的乘方为基础的另一种计数法。图3―3说明了如何设计一系列以三进制为基础的卡片的方法。在此情形下,每个三进制数字中可能包含0、1或2三个数。当一个“1”在一列中出现时,我们把相应的十进制数字在相应的列的卡片上记一次;当一个“2”出现时,我们把相应的十进制数字在相应列的卡片上记两次。

  图3-3

  图3―4列出了3个速算卡片,用以判别从1到26中任一个被选的数,只是你无论如何要让别人告诉你当你递给他每一张卡片时,他看到他选择的数字在此卡片上出现一次或两次。如果他(她)看到了两次,那么在做加法时,你一定要把这张卡片的头一个数字乘以2。

  图3-4

  你也可能希望把这个体系延展到6张卡片。正如我们所知道的,6张二进制的卡片的识别数的范围是1到63,那么6张三进制的卡片的识别数的范围是多少呢?答案是1到728。这样,如何归纳高于三进制数字系统的方法就很容易理解了。比如,以4的乘方为基础的一系列长片,在一张卡片上一些数字可能重复两次,另一些也可能重复三次。如果重复三次,在你做加法前,你必须把卡片的头一个数字乘3。

  三进制卡片阐明了这样一个事实:在一些方面,三进制分类比二进制效率高得多。如果我们总是把一系列数分成三部分而不是两部分,并且知道哪一部分含有要找的元素,那么经过很少几次提问就能猜出这个元素。然而,提问方式也不再是“对或错”型的了。

  三进制分类的妙用被下面的扑克牌游戏说明得淋漓尽致。它使用任何33=27张扑克牌。某人透过扑克盒看并记下一张牌,魔术师拿出这盒牌并把它们面朝上分发成三堆,然后,这个人指出他记的牌在哪一堆里面。

  魔术师把另两堆牌先收在一个盒内,然后再把观众指出的那堆牌分发成面朝上的三堆。这个人再指出包含他(她)记的牌的那一堆。重复第三次时,当魔术师知道被选择的那张牌在哪一堆后,他收起了这些堆牌并把扑克盒面朝下,放在了桌子上。当这位观众说出他(她)选的那张牌时,魔术师翻开了扑克盒内最上面的一张牌,它恰好是观众所选的那张。这个游戏你可以不断重复,永远不会出错。

  谜底很简单。魔术师每次收这三堆牌时都留意把包含被选择牌的那一堆放在面朝下的扑克盒的最上部,这自然就把被选择的牌推到了最上部。这是怎么回事并不难理解。其原理除了每次把扑克牌分成三堆与猜电话号码时把数字分成两部分不一样外,其它与猜电话号码一样。第一次装起牌后,被选的牌一定在最上面的九张牌内;第二次装起牌后,这张牌一定在最上面的三张牌间;第三次后,它一定是最上面的一张了。如果你把被选择的卡片面朝上来浏览这一过程,你能看到它向上运动的全过程:经过三个阶段到达最上面。用上面同样的过程,通过计算机对元素分类在现代化的信息重组理论上起了很大作用。