正文

数据压缩——有益无害(6)

改变未来的九大算法 作者:(美)约翰·麦考密克


回到更短符号把戏。和本书中描述的许多本该是技术性的思想一样,人类也一直在运用更短符号把戏,用时甚至想都没想过。更短符号把戏的基本思想是,如果你使用某样东西足够多次,给它起个简短缩写是很值得的。所有人都知道“USA”是“United States of America”(美利坚合众国)的缩写——我们所有人每次在输入或说出这个由3个字母组成的代码“USA”,而非其代表的由24个字母组成的完整短语时都节省了很多力气。你知道“The sky is blue in color”(天空很蓝)的缩写吗?这个短句恰好也由24个字母组成。当然不知道!但为什么呢?“United States of America”和“The sky is blue in color”之间有什么区别?关键区别在于,其中一个短语的使用频率要比另一个大得多,而通过缩写一个经常使用的短语而非一个极少使用的短语,我们可以节省大量力气。

让我们尝试将这个想法应用到上一页的代码系统中去。我们已经知道,通过使用经常用到的东西的缩写,我们节省的力气能达到最大。字母“e”和“t”在英语中使用得最频繁,让我们尝试用更短的代码来代替这两个字母。现在,“e”是31,“i”是46——每个字母都需要两个数字代表。将两个数字减成一个数字呢?假设现在“e”由8代表,“t”由9代表。这个主意太好了!记得我们之前是如何编码短句“Meet your .ancé there”(去那见你的未婚夫)的吧,当时一共用了46个数字。现在我们可以只使用40个数字:

M e e t y o u r f i a n c é t h e r e .

138 8 9 005141474400323527402982009 348 448 66

不幸的是,这一计划有个致命缺陷。计算机并不存储单个字母间的空格。因此编码不会像“13 8 8 9 00 51 . . . 44 8 66”,而是和“138890051. . . 44866”一样。你发现问题了没有?集中看前5个数字,也就是13889。注意代码13代表“M”,8代表“e”,9代表“t”,因此数字13889的解码方式之一是将其拆成13-8-8-9,得到单词“Meet”。但88代表重读符号“ú”,因此数字13889也可能拆分为13-88-9,即“Mút”。事实上,情况还可以更糟,因为89代表另一个略为不同的重读符号“ù”,因此13889的另一种可能拆分是13-8-89,代表“Meù”。根本没办法分辨这三种可能的翻译中哪种正确。


上一章目录下一章

Copyright © 读书网 www.dushu.com 2005-2020, All Rights Reserved.
鄂ICP备15019699号 鄂公网安备 42010302001612号