哈夫曼压缩算法的内容是什么?

2025-12-16 17:23:34
推荐回答(1个)
回答1:

注:哈夫曼和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 a  b c
  表:编码过程(min_length
=
2)
  步骤 位置 匹配串 输出
  1  1   --   a
  2  2   a   a
  3  3   --
   b
  4  4   b   b
  5  5   --   c
  6  6   b
b  (3,2)
  7  8
  a
a
b (7,3)
  8  11   c   c