数学聊斋之二(李尚志)
发信人: mingzi (单身汉)
二、 《指鹿为马》之幼儿版
—— 纠错码
最近读到一则笑话:
某人向客人夸耀自己的儿子博比特别聪明:“他只有两岁,就认识所有的动物了。”并让
儿子在客人面前表演。客人翻开一本动物画册,指着一张长颈鹿的画片问:“这是什么?
”答:“马马。”又指了一张老虎的画片,又答:“猫咪。”然后指了狮子的照片,博比
说:“狗狗。”又指了黑猩猩的画片,博比说:“爸爸。”
这则笑话的题目叫做《聪明的博比》。读了之后,发笑之余,你觉得博比聪明吗?假如你
是考官,在这场辨认动物的考试中,你给博比多少分?
博比将所问的四种动物都答错了,按照我们通行的考试标准,只能得零分。但这只能说明
他不认识这四种动物,却不能说明他不聪明。两岁的幼儿怎能认识所有的动物呢?他认识
马、猫、狗、爸爸(人)这些在日常生活中常见的动物,不认识长颈鹿、老虎、狮子、猩猩
这些在日常生活中少见的动物。他不认识长颈鹿,却能在认识的动物中找到一种最接近长
颈鹿的,这就是马。对他不认识的老虎、狮子、猩猩,他也都能在认识的动物中分别找到
最接近的猫、狗、爸爸来作为答案。这难道不是很聪明的吗?
实际上,博比采用的就是现代纠错码的原理。我们现在常采用由 0,1 组成的序列来传递
信息。但是,传递过程中可能出错,比如序列中某一位本来是0,传递过程中变成了1,整个
信息就错了。问题是:接收信息的一方怎么能知道收到的序列是否有错?如果有错,怎样
纠正?
假如序列中某一位本应是0,却变成了1,成为另一个序列。如果这个已经错了的序列代表
了另一个信息,那么接收方就无法知道这个序列是否发生了错误,而会将它误译为另一个
信息。可以假定错误是不多的,比如假定在10 位中最多可能错一位。但必须让它错了一
位之后就不代表任何信息,这才知道出现了错误。具体来说:由10位0,1数字总共可能组成
2^10=1024种不同的序列。如果将这1024个不同的序列全部用来传递信息,那就不能发现错
误了。只能将其中一部分序列作为传递信息的合法序列,其余的都是非法的序列。而且选择
合法的序列使它们每两个之间至少有三位数字不相同。这样,如果接收到的序列不是合法
序列,就可能断定是在传递过程中发生了错误。怎样进行纠正?向聪明的博比学习----将
这个非法序列修改一位,纠正为一个与之最接近的合法序列! 就好象博比将“非法动物”
(他不认识的)长颈鹿纠正为“合法动物”(他所认识的)马。
不妨说:纠错码的原理就是“指鹿为马”。发出的信息只能是“马”而不能是“鹿”,如
果你收到的是“鹿”,那就是错了,要将它纠正为 “马”!
--
Another roof ,another proof
※ 来源:·北大未名站 bbs.pku.edu.cn
其他文章: