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

本文深入探讨数据压缩中的LZ77和LZ78编码原理,包括编码过程、特点、改进方案及实际应用,特别关注这两种算法如何在不同情况下优化压缩效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

5.2

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

2.


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

5.3 static dictionary:application-specified



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

5.4 adaptive dictionary

1.LZ77

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

          

——》LZ77解码过程

——》LZ77特点:

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

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


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

——》LZ77改进:

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

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

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

  


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.youkuaiyun.com/xyz_lmn/article/details/6093315  点击打开链接

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值