编程语言
首页 > 编程语言> > LZ系类压缩算法介绍

LZ系类压缩算法介绍

作者:互联网

LZ系类压缩算法介绍

主要介绍1)简单字典编码,2)LZ77字典编码,3)LZ78字典编码。

1、简单字典编码

这是一种简单的方法,但是需要遍历两次待压缩的数据。

1.1、实现具体步骤

1.2、优缺点

2、LZ77

2.1、LZ77算法介绍

LZ77算法是由Lempel和Ziv在1977年的论文中提出来的,该算法将输入流中之前的字符作为字典。编码器维护一个滑动窗口,输入字符流从右往左滑动。滑动窗口由两部分组成,如下图所示,左边的是已编码区域(当前字典),右边是待编码区域。已编码区域长度通常是1000+,待编码区域通常是数十个字节。匹配的数据使用三元组来表示(距离,匹配长度,待编码区下一个符号)滑动窗口示意图

2.2、编码器工作步骤

2.2.1 Example

LZ77工作步骤示意图

2.3、优缺点

3、LZ78

LZ78算法是Lempel和Ziv在1978年提出的,LZ78和LZ77两种算法在构建字典的思路上完全不同。LZ78没有使用滑动窗口,通过对已经编码的数据进行统计,实时更新维护字典。编码器输出二元组(字典指针,未编码的符号),工作编码过程如下图所示。

LZ78工作过程示意图

3.1、编码器工作步骤

3.2、优缺点

4、总结

LZ77和LZ78是两种不同的思路,LZ77将前面已经编码的数据作为字典,利用了数据局部性的原理,搜索区域的大小决定了算法的执行时间,和压缩的效率,适合相同数据在较短时间内重复出现的场景;LZ78维护了一个全局的字典,需要确定字典的大小,字典过大,遍历时间过长,适合文本编码

5、参考文献

标签:编码,编码器,匹配,系类,压缩算法,LZ77,LZ78,LZ,字典
来源: https://www.cnblogs.com/lab601/p/14206346.html