关于Lempel-Ziv压缩算法的笔记
Lempel-Ziv, 简称LZ, 拥有LZ77, LZ78, LZW几种不同的演变算法!LZ是一种典型的字典型压缩算法, 巧妙的利用字典, 减少信息量。
例子:
原始编码为: 1001011011010101011
现在有空字典一个, 首先由第一的bit开始, 索引1对应1,因为字典中没有0这个元素, 所以索引2对应0, 第三个bit, 0已经出现在字典中, 我们推后一位01,没有出现在字典中,因此索引为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之类的算法。使用的是即时编码的方式,一边编码一边加入字典。