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
   83   84   85   86   87   88   89   90   91   92   93