Page 88 - 计算机技术与人工智能
P. 88
计算机技术与人工智能 Computer Technology and Artificial Intelligence
(二)游程编码
哈夫曼编码确实减少了待发送的比特数,但却要求知道频率值。如前所述,
它还假设比特位被组成字符或其他一些重复的单元。很多在通信媒体中传播的数
据,包括二进制(机器代码)、文件、传真数据和视频信号等都不属于这一类。
例如,传真机根据一张纸上的明暗区间传送相应的比特位。它并不直接传
输字符,因此需要一种更加通用的能够对任意比特串进行压缩的技术。游程编
码(Run-Length Encoding)使用一种简单而显而易见的方法:分析比特串,寻
找连续的“0”或“1”。它不发送所有比特,而只发送有多少个连续的“0”或
“1”。有两种实现游程编码的方法:
1.相同比特的游程
这种方法特别适用于大多数连续序列都是相同比特值的二进制流。在一次主
要是字符的传真中,会有很多个“0”序列(假设一个亮点对应一个“0”)。这
种方法只把每个序列的长度以二进制整数传送出去。接收站点接收每个长度,并
产生适当长的比特序列,在各序列当中插入其他的比特值。
如果序列长度太大,无法用两个4比特数字的组合表示,这种方法就是使
用足够多的4比特组合。接收站点应知道一个全“1”的组合表示接下来的组合
对应同一个序列。这样,它不断地把组合的值相加在一起,直到接收到一个非
全”1”的组合。所以,序列长度30用1111,111,0000来表示。这种情况下必须
用一个全”0”的组合来告诉站点序列在第30个零处停止。
如果以一个“1”开始,压缩流如何区分呢?与两个连续“1”的情况类似,
这种方法把流看作以一个长度为“0”的零序列开始。所以发送的第1组4个比特
应该是0000。
这种技术最适用于有很多个零序列的情形。随着值为“1”的比特出现频率
的增大,该技术的效率也将有所下降。实际上,有时候用这种技术处理某个流,
可能会产生一个更长的比特流。
2.不同字符的游程
知道待处理的是相同的比特,事情就简单了,因为只需发送序列的长度就可以
了。但如果碰到不同的比特甚至字符序列,就在序列长度后面发送实际的字符。
(三)相关编码
已讨论过的两种压缩技术都有它们各自的应用,但某些情况下,它们的用处
76

