词典编码
1977年由两位以色列教授发明的编码
词典编码是指用符号代替一串字符,在编码中仅仅把字符串看成是一个号码,而不去管它来表示什么意义,1977年由两位以色列教授发明,1985年美国Wekch对该算法进行了改进。
简介
词典编码 包括 LZW编码 是1977年有两位以色列教授发明 Lempel-Ziv压缩技术。并在1985年,美国的Wekch对该算法进行了改进。
其基本思想是 用符号代替一串字符;这一串字符可以是有意义的,也可以是无意义的。
此压缩技术是围绕词典的转换来完成,这个词典实际是8位ASCII字符集进行了扩充。扩充后的代码有,9位,10位,11位,12位,乃至更多。12位的代码可以有4096个不同的代码。
算法步骤
编码步骤
步骤一:开始的时候词典包含所有可能的单字符,而当前前缀P是空的。
步骤二:当前字符C:=字符流中的下一个字符。
步骤三:判断P+C是否在词典中。
如果是,则用C扩展P,即P=P+C
如果否,则
①输出代表当前前缀P的码字
②将前缀-字符串P+C添加到字典中
③令P:=C
步骤四:判断字符流中是否还有字符需要编码。
如果是,则返回到步骤二
如果不是,输出代表当前前缀P的码字,并结束
译码步骤
步骤一:在开始译码时词典包含所有可能的前缀根。
步骤二:cW:=码字流中的第一个码字。
步骤三:输出当前缀符串string.cW到字符流。
步骤四:先前码字pW:=当前码字cW.
步骤五:当前码字cW:=码字流中的下一个码字。
步骤六:判断先前缀符串是否在词典中。
如果“是”,则:1把当前缀符串string.cW输出到字符流;2当前前缀p:=先前缀符串pW;3当前前缀符串string.cW的第一个字符;4把缀符串P+C添加到词典中。
如果“否”,则:1当前前缀p:=先前缀符串pW;2当前字符C:=当前缀符串pW的第一个字符;3输出缀符串P+C到字符流,然后把它添加到词典中。
步骤七:判断码字流中是否还有码字要译。
如果“是”,就返回到步骤4,如果“否”,结束。
算法举例
C语言
//编码
参考资料
最新修订时间:2024-02-19 09:16
目录
概述
简介
算法步骤
参考资料