是否存在为某个字母生成霍夫曼编码的约定?结果编码似乎取决于您是将“0”分配给左子项还是右项,以及您如何确定哪个符号将转到左侧树。
作为一种常见的约定,位'0'表示跟随左子 并且位'1'代表跟随正确的孩子。
这是对方差前半部分的答案。但是,我找不到下半场的任何惯例。我会假设在左边使用较低概率的节点,但在线的几个示例霍夫曼树不会这样做。
例如:
那么是否存在左右分配节点的约定,还是由实现来决定?
如果这是重复,我道歉,但我无法找到答案。
答案 0 :(得分:1)
是的,实际上有。与其说是互操作性的惯例,而不是编码效率。它被称为Canonical Huffman,其中代码按照从最短代码到最长代码的数字顺序分配,并且在单个代码长度内,它们在符号上以字典顺序分配。这允许仅传输每个符号的代码长度,而不是整个树结构。
通常所做的是仅使用霍夫曼算法树来确定每个符号的比特数。然后丢弃树。位值永远不会分配给分支。然后使用上面的顺序直接从长度构建代码。