【数据压缩】基于字典的压缩算法 DICTIONARY TECHNIQUES

参考材料:数据压缩导论Sayood(第五章)

5.2

1.计算至少在挑选出的字典中出现pattern的概率是多大时才能有压缩效果

2.

【数据压缩】基于字典的压缩算法 DICTIONARY TECHNIQUES_第1张图片


*************************************************

5.3 static dictionary:application-specified

【数据压缩】基于字典的压缩算法 DICTIONARY TECHNIQUES_第2张图片


*************************************************

5.4 adaptive dictionary

1.LZ77

——》3种在LZ77编码过程中可能出现的情况

          【数据压缩】基于字典的压缩算法 DICTIONARY TECHNIQUES_第3张图片

——》LZ77解码过程

——》LZ77特点:

1)“似乎”不需要对信源提前有任何知识(不是static,而是在发送过程中不断建立起对于信源知识,即adaptive);

2)(不太理解)“渐进情况下的” 最优性

【数据压缩】基于字典的压缩算法 DICTIONARY TECHNIQUES_第4张图片

3)因为用的是recent portions of sequece,所以LZ77有个“隐含的”假设,即pattern最有可能出现在刚刚的sequence中,即pattern往往发生的距离挨得很近——下面的LZ78没有这个假设。

——》LZ77改进:

1)对于triple的更有效编码:使用前面几章的VL编码(变长编码)而不是用固定长度进行编码

2)改进search-buffer中的存储方式,使得搜索起来更快

3)LZSS:增加一个flag bit,用以eliminate triple中的最后一个域

  【数据压缩】基于字典的压缩算法 DICTIONARY TECHNIQUES_第5张图片


2.LZ78

——》对LZ77最恶劣的情形:重复的地方正好在searchi-window之外。这是由LZ77的假设带来的。而LZ78用明显的字典,因此没有这种假设(实际上,如果字典的更新策略为顺序更新的话,则等价于LZ77)

——》LZ78编码示例

——》LZ78一个serious drawback:字典不断增大。解决办法:一,及时删减字典;二,到了某个时刻转为fixed dictionary scheme

——》LZ78的一个改进:LZW,使得使用发送index即可。(LZW编码过程,译码过程。)

——》LZW译码过程中的一个特殊情形abababab...:译码示例。说明LZWdecoder需要包含一个handler来处理这种情况,实际上,稍作改动就可以不用这个handler了(特殊情形下的译码需要handler,我的改进无需handler,但是输出和原LZW不太一样哦)


其他字典压缩算法:

LZO和MiniLZO编码介绍:http://blog.csdn.net/xyz_lmn/article/details/6093315  点击打开链接

http://www.codingnow.com/windsoul/package/lzoc.htm  点击打开链接

你可能感兴趣的:(数据压缩)