霍夫曼树为非二进制字母?

时间:2011-03-27 21:18:26

标签: algorithm compression huffman-code

对于生成的字母表不是二进制的情况,是否可以轻松推广霍夫曼编码树?例如,如果我想通过三元写出来压缩一些文本,我仍然可以为每个字符构建一个无前缀的编码系统。霍夫曼结构的直接推广(使用k-ary树而不是二叉树)是否仍能正常有效地工作?或者这种结构是否会导致编码方案效率极低?

2 个答案:

答案 0 :(得分:6)

该算法仍然有效,而且仍然很简单 - 事实上,维基百科简要提到n-ary Huffman coding引用原始霍夫曼论文作为来源。

然而,确实发生了这样的情况,就像霍夫曼稍微不理想一样,因为它为每个符号分配了一个整数位(与Arithmetic coding不同),三元霍夫曼应该有点更多次优,因为它必须分配一个整数 trits 。不是一个显示阻止者,特别是只有3个,但它确实表明当你增加n时,n-ary Huffman将落后于其他编码算法。

答案 1 :(得分:4)

作为一项实证检验,我构建了二元和三元霍夫曼树,用于分布拼字游戏。

分布的熵表明你不能比每个字母的4.37位好。

二进制霍夫曼树每个字母平均使用4.41位。

三重霍夫曼树每个字母平均使用2.81个trits,其信息密度与每个字母4.45位相同。