LZW算法详解
1. LZW算法简介 LZW算法又叫“串表压缩算法”就是通过建立一个字符串表,用较短的代码来表示较长的字符串来实现压缩,是一种无损压缩算法。 LZW压缩有三个重要的对象:数据流(CharStream)、编码流(CodeStream)和编译表(String Table)。在编码时,数据流是输入对象(文本文件的据序列),编码流就是输出对象(经过压缩运算的编码数据);在解码时,编码流则是输入对象,数据流是输出对象;而编译表是在编码和解码时都须要用借助的对象。 其中在编码和解码时编译表(下面称为字典),是中间产物,在编码和解码后删除即可。 2. LZW编码算法手动模拟 现在我们先假设一个简单的场景以便我们理解,假设我们现在对 ILOVEYOUILOVEYOU 这一串只有 大写字母A-Z的序列进行压缩。 因为这段序列中只有字母A-Z那么我们只需要下面这个字典就可以一定可以编码这个序列。 Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Seq A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 现在我们设想如果字典里有我们要编码的序列的子序列的话,例如字典中有(27,“YOU”)这一项,那么我们编码序列的长度与原来相比肯定更优