实验简介
实验目的
掌握词典编码的基本原理,用
C/C++/Python
等语言编程实现
LZW
解码器并分析编解码算
法。
实验内容
1.LZW编码原理和实现算法
LZW
的编码思想是不断地从字符流中提取新的字符串,通俗地理解为新
“
词条
”
,然后用“
代号
”
也就是码字表示这个
“
词条
”
。这样一来,对字符流的编码就变成了用码字去替换字符流,生成码字流,从而达到压缩数据的目的。LZW
编码是围绕称为词典的转换表来完成的。LZW
编码器通过管理这个词典完成输入与输出之间的转换。
LZW
编码器的输入是字符流,字符流可以是用8
位
ASCII
字符组成的字符串,而输出是用
n
位
(
例如
12
位
)
表示的码字流。
LZW
编码算法的步骤如下:
步骤1
:将词典初始化为包含所有可能的单字符,当前前缀
P
初始化为空。
步骤2
:当前字符
C=
字符流中的下一个字符。
步骤3
:判断
P
+
C
是否在词典中
(1
)如果
“
是
”
,则用
C
扩展
P
,即让
P=P
+
C
,返回到步骤
2
。
(2)如果“
否
”
,则
输出与当前前缀P相对应的码字W
;
将P+
C
添加到词典中;
令P=C,并返回到步骤
2。
LZW
编码算法可用下述函数实现。首先初始化词典&