哈夫曼压缩算法的内容是什么?
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
Sievers分析仪
2024-12-30 广告
2024-12-30 广告
是的。传统上,对于符合要求的内毒素检测,最终用户必须从标准内毒素库存瓶中构建至少一式两份三点标准曲线;必须有重复的阴性控制;每个样品和PPC必须一式两份。有了Sievers Eclipse内毒素检测仪,这些步骤可以通过使用预嵌入的内毒素标准...
点击进入详情页
本回答由Sievers分析仪提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询