霍夫曼编码公约

时间:2015-11-16 03:18:48

标签: huffman-code

是否存在为某个字母生成霍夫曼编码的约定?结果编码似乎取决于您是将“0”分配给左子项还是右项,以及您如何确定哪个符号将转到左侧树。

Wikipedia说:

  

作为一种常见的约定,位'0'表示跟随左子   并且位'1'代表跟随正确的孩子。

这是对方差前半部分的答案。但是,我找不到下半场的任何惯例。我会假设在左边使用较低概率的节点,但在线的几个示例霍夫曼树不会这样做。

例如:

huffman tree

那么是否存在左右分配节点的约定,还是由实现来决定?

如果这是重复,我道歉,但我无法找到答案。

1 个答案:

答案 0 :(得分:1)

是的,实际上有。与其说是互操作性的惯例,而不是编码效率。它被称为Canonical Huffman,其中代码按照从最短代码到最长代码的数字顺序分配,并且在单个代码长度内,它们在符号上以字典顺序分配。这允许仅传输每个符号的代码长度,而不是整个树结构。

通常所做的是仅使用霍夫曼算法树来确定每个符号的比特数。然后丢弃树。位值永远不会分配给分支。然后使用上面的顺序直接从长度构建代码。