【算法】LZ77压缩算法

LZ77算法的说明网上很多,本文为个人见解,仅供参考。

本人认为LZ77算法其实是字典压缩的一个变种,与字典压缩不同的是,它的字典是动态生成的并且只有一个,一般选取一定数量的最近压缩过数据。保存这些数据的结构叫做滑动窗口,所以LZ77有被常称作滑动窗口算法。至于这么生成字典的原因,其实很简单,因为我们认为一个要压缩的字符串很有可能与上下文相关,也就是说很有可能在刚压缩的字符串中出现过。要压缩的字符串会与滑动窗口中的字符匹配并用三元组的形式来表示(不懂请看例子),以下的一个LZ77的压缩例子,能很好的说明此算法的流程,这个例子网上有,本文只是更通俗易懂的展现之。

有一个要压缩的串abcdbbccaaabaeaaabaee

假设前面10个字符已经被压缩,并且设置滑动窗口为10个字符。

窗口未压缩相同字符串相同字符串起始位置相同字符串长度相同字符串后一字符压缩码
abcdbbccaaabaeaaabaeeab02a(0,2,a)
dbbccaaabaeaaabaeenull00e(0,0,e)
bbccaaabaeaaabaeeaaabae46e(4,6,e)
压缩码为(0,2,a)(0,0,e)(4,6,e)

算法其实原理就是这,至于后续工作请查阅其他资料。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zfpigpig

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值