压缩并修复霍夫曼代码

dvd*_*dvd 7 deflate huffman-code

我正在尝试实现一个 deflate 压缩器,并且必须决定是使用静态霍夫曼代码压缩块还是创建动态压缩器。

与静态代码相关的长度背后的基本原理是什么?

(这是rfc中包含的表格) Lit Value Bits --------- ---- 0 - 143 8 144 - 255 9 256 - 279 7 280 - 287 8 我认为静态代码更偏向于纯ascii文本,相反,它看起来更喜欢rle长度的压缩

决定是否使用静态代码的良好启发式是什么?

我正在考虑根据输入数据的样本构建概率分布,并根据静态代码导出的概率计算距离(也许是 EMD?)。

Mar*_*ler 7

我猜测代码的创建者从压缩数据中获取了大量的文字和长度样本,可能包括可执行文件和文本,并在大量数据中找到了典型的代码长度。然后用所示的表格对它们进行近似。然而作者已经去世很多年了,所以我们永远无法确定。

你不需要启发式。一旦完成查找匹配字符串的工作,计算动态和静态表示的块中的位数就相对非常快。然后只需选择较小的一个即可。或者静态的(如果相等的话)(解码速度更快)。

  • 作者是谁——是菲尔·卡茨吗? (4认同)
  • 正确的。菲尔·卡茨. (4认同)