【问题标题】:Does the Huffman Code Tree in Deflate algorithm have to be a complete tree?Deflate算法中的霍夫曼代码树是否必须是完整的树?
【发布时间】:2021-03-15 04:42:24
【问题描述】:

Deflate 算法中的 Huffman 代码树必须是完整的树吗?通过完整树,我的意思是每个叶节点必须始终代表一个符号。换句话说,最后一个代码最长的符号将被赋值为全1。

举一个极端的例子:给定 286 个符号,每个符号都用 15 位代码编码——这在一般的霍夫曼树编码中是可能的。然而,在这种情况下,有 2^15 - 286 个叶节点未分配/使用。 Deflate 允许吗?我的印象是 Deflate 不允许这样做,并且树必须是完整的。这是真的吗?

【问题讨论】:

    标签: zlib deflate


    【解决方案1】:

    除一种情况外,有效放气流中动态块中描述的霍夫曼​​代码必须是完整的。这些是位长度代码、文字/长度代码和距离代码。

    一个例外是,如果只使用一个距离符号,则使用一位(零)而不是零位进行编码,留下一个未使用的代码(一位为一)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多