意义与机制
无损压缩必须能够精确地从压缩后的表示中恢复原始数据。 运行长度编码利用连续重复,而霍夫曼编码利用符号频率的差异。
重要的是为经常出现的符号分配简短的代码,但这些代码不能造成歧义。对于数据,如果使用重复长度,则由于信息频率,可能会增加数据大小。
关系与条件
熵 H 是衡量理想平均符号分布信息量的参考。 在二进制 Huffman 编码中,当有多个符号时,平均码长 L 可以与 H ≤ L < H+1 比较。
实验不使用有限字母集,也不使用固定数量的原始比特,并且不包括霍夫曼表存储成本。在实际文件中,还需要考虑标题和字典的成本,以及区块的成本。
观察实验中需要注意的事物
重复性和符号频率决定压缩效率。
输入使用四个符号。原始数据每符号使用 8 位;RLE 使用一个 8 位符号和一个计数。汉夫表开销不计。
关键关系与符号
H ≤ L < H + 1 · ratio = compressed / original
| 符号 | 含义 | 单位 |
|---|---|---|
| H | 每个符号的信息熵 | bit/符号 |
| L | 平均代码长度 | bit/符号 |
| 压缩比例 | 压缩大小/原始大小 | 无单位 |
工作实例
Huffman 编码如何对频繁符号进行编码?
通常更短 · 重复以及符号频率决定压缩效率。
常见误解
- 代码本身变得更小,并不意味着整个实际保存的文件也随之减少了相同的比例。
