LZSS算法名称的由来

LZSS算法名称的由来,第1张

LZSS是一种由LZ77改进的基于字典压缩的编码,LZSS编码的原理是搜索目前未压缩的数据是否在前面出现过,如果出现过则利用前面出现的位置和长度代替现在的未压缩数据。

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


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12198672.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存