LZ77算法是由 Lempel-Ziv 在1977发明的。LZ77算法有许多变种算法,LZSS算法是LZ77其中一种变形,虽然LZ77有多种变形算法,但是这些基于LZ77变形的算法背后的原理都是一样的。
请原谅我复制了上面俩段
我只是想告诉你 加上我自己的认知和我在网上能搜索到的所有内容来告诉你
LZSS 后SS是一种算法 不代表意义
不是人名 就象LZ77一样
它是演变过来的 区别LZ77 以LZSS算法的形式
后面SS 是代表这种算法的规律和变化
所以就象加减乘除 它仅代表一种运算方式
看到LZSS你就想到了这 LZ77又是另一种
不知道我的浅薄解释您满意不?
注:哈夫曼和LZSS算法不是同一种算法,先用哈夫曼再用LZSS算法压缩后会发现经哈夫曼压缩后再用LZSS压缩文件会变大,具体原因不明LZSS原理:
把编码位置置于输入数据流的开始位置。
在前向缓冲器中查找窗口中最长的匹配串
① Pointer :=匹配串指针。
② Length :=匹配串长度。
判断匹配串长度Length是否大于等于最小匹配串长度(MIN_LENGTH) ,
如果“是”:输出指针,然后把编码位置向前移动Length个字符。
如果“否”:输出前向缓冲存储器中的第1个字符,然后把编码位置向前移动一个字符。
如果前向缓冲器不是空的,就返回到步骤2。
例:编码字符串如表03-05-3所示,编码过程如表03-05-4所示。现说明如下:
“步骤”栏表示编码步骤。
“位置”栏表示编码位置,输入数据流中的第1个字符为编码位置1。
“匹配”栏表示窗口中找到的最长的匹配串。
“字符”栏表示匹配之后在前向缓冲存储器中的第1个字符。
“输出”栏的输出为:
① 如果匹配串本身的长度Length >= MIN_LENGTH,输出指向匹配串的指针,格式为(Back_chars, Chars_length)。该指针告诉译码器“在这个窗口中向后退Back_chars个字符然后拷贝Chars_length个字符到输出”。
② 如果匹配串本身的长度Length >= MIN_LENGTH,则输出真实的匹配串。
表:输入数据流
位置 1 2 3 4 5 6 7 8 9 10 11
字符 A A B B C B B A AB C
表:编码过程(MIN_LENGTH = 2)
步骤 位置 匹配串 输出
11 -- A
22 A A
33 -- B
44 B B
55 -- C
66 B B(3,2)
78 A A B (7,3)
811 C C
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)