我爱秋香 — 劉炯朗

Share Button

站在效率的观点,

    我们要采取一套规则和方法,

    以便尽量压缩要传递的资料。

    随着电脑科技、通讯科技的发展,当我们要传递资料时,必须选用适当的规则方法和格式,来代表并呈现这些资料,然后据此将资料传出去。在电脑里,任何资料都可以用一连串的“0”和“1”来代表,但是不同的资料怎样选择不同的“0”和“1”,就是所谓“编码”的问题。

    编码有三个重要的技术上的考量,第一是效率,那就是在选码时,以简短为原则,让我们在最短时间内将资料传递过去。第二个是可靠,就是在选码时,即使在传递过程中发生一些错误,也不会影响接收资料的正确性。第三是保密,就是在选码时,即使有第三者窃听到传递码,也无法知道传递码代表的真正资料是什么。

    接着,让我们从技术观点,来谈编码的问题。


    编码的第一个考量是效率。以英文的26个字母为例,每个英文字母都可以用一连串的“0”和“1”来代表。如果只用4个“0”和“1”是不够的,因为只有16个不同的排列,例如“0000”、“0001”、“0010”、“0011”,等等。所以,纯粹以效率的观点,我们会用一连串的5个“0”和“1”,来代表英文的26个字母。

    资料的压缩与还原

    有人会问,难道没有进步空间了吗?请听我细细道来。如果我们用5个“0”和“1”来代表一个英文字母,一封有一千个英文字母的信,就得用5千个“0”和“1”。按照统计结果,英文文件中最常出现的字母是“E”、“T”、“A”、“O”、“I”等,最不常出现的是“J”、“X”、“Q”、“Z”等。那么,假如我们用比较少的“0”和“1”代表最常出现的字母,例如一连串三个或者四个“0”和“1”;用比较多的“0”和“1”代表不常出现的字母,例如一连串7个或8个“0”和“1”;那么平均下来,也许我们会赚到了。换句话说,一封有一千个英文字母的信,因为信里“E”、“T”、“A”、“O”、“I”比较多,“J”、“X”、“Q”、“Z”比较少,平均下来可能不必用到5千个“0”和“1”。

    其实,按照英文字母出现的频率,用长度不同的连串的“0”和“1”代表26个不同的英文字母的观念,在计算机发明前已经有人想到,就是用在电报里的摩斯码。电报是在19世纪发明的,在摩斯码里,用短和长两个讯号组合起来代表26个不同的英文字母,例如英文字母“E”用“.”代表;“I”用“..”代表;“A”用“.-”代表,“Z”用“--..”代表;“Q”用“--.-”代表等等。

    和前面讲的基本观念完全一致,在资料科学里,这个观念可以用哈夫曼树的技术准确地表示呈现出来。在大学里学过资料结构的读者都会记得。讲到这里,相信大家对传递的效率这个观念,已经有了基本的了解,还有没有可以讲的东西呢?当然有,还多得很呢。差不多每一个人都有一个MP3用来听音乐。什么是MP3呢?除了数字、文字的资料外,我们还有声音、图片、动画的资料,这些资料都可以全部用“0”和“1”代表,这些“0”和“1”的资料可以用不同的规则和方式代表,以效率的观点而言,我们要采取一套规则和方法,希望能够尽量压缩这些资料。

    为什么这些资料可以压缩呢?让我们用两个简单的例子来说明:第一个例子,在声音里有一小部分的频率,即使我们把这些频率拿掉,我们的耳朵是分辨不出来的,所以为了效率的缘故,当我们传送声音时,我们就把这小部分的频率拿掉。第二个例子,当我们要传送一连串的图片时,我们可能把这些图片一张一张地单独送,但是,例如在电影里,一连两张的图片可能很相似,只有一点点的差别,那么在传送了第一张后,我们只要把第一张和第二张之间的差别传出去,收到的人就可以把第一张和第二张还原了。

本篇發表於 劉炯朗博士文章, 專家筆記。將永久鏈結加入書籤。

發表迴響

你的電子郵件位址並不會被公開。

你可以使用這些 HTML 標籤與屬性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>