Lempel-Ziv压缩算法

 

Lempel-Ziv, 简称LZ, 拥有LZ77, LZ78, LZW几种不同的演变算法!LZ是一种典型的字典型压缩算法, 巧妙的利用字典, 减少信息量。

例子:

原始编码为: 101011011010101011
现在有空字典一个, 首先由第一的bit开始, 索引1对应1,因为字典中没有0这个元素, 所以索引2对应0, 第三个bit, 1已经出现在字典中, 我们推后一位10,没有出现在字典中,因此索引为3加入字典。 以此类推!

索引最终用二进制方式表示, 我们得到1,0,10,11,01,101,010,1011这8个字典项, 用3位码可以表示, LZ扩展了一位已表示各个元素间关系。 如下表就是一个完整的字典:

字典
 位置  内容  编码
 001  1 0001 
 010  0  0000
 011  10  0010
 100  11  0011
 101  01  0101
 110  101  0111
 111  010  1010
   1011 1101 

 

如上所示, 对应的编码是叠加的内容10, 1的位置为001, 10为001+0=0010, 以此类推!

在实际应用中, 使用的是LZ77, LZ78之类的算法。使用的是即时编码的方式,一边编码一边加入字典。

posted @ 2016-10-15 16:33  clown_yang  阅读(3113)  评论(0)    收藏  举报