【发布时间】:2014-07-24 17:29:44
【问题描述】:
我正在研究在非二进制字母上构建最佳霍夫曼代码。
这个问题是在Huffman trees for non-binary alphabets? 中提出的。该解决方案建议使用一次组合 n 个最低频率符号的霍夫曼编码过程(维基百科也建议)。然而,这似乎不是最优的。假设我有 4 个带有频率的字母,
A --> 0.4
B --> 0.25
C --> 0.2
D --> 0.15
使用 this 导出的三元霍夫曼代码将是
A --> 0
B --> 10
C --> 11
D --> 12
但是,以下代码的预期长度会更短:
A --> 0
B --> 1
C --> 20
D --> 21
我错过了什么吗?
PS 我将这个问题作为一个问题发布,因为我无法对之前的帖子发表评论。
【问题讨论】:
-
您能否解释一下如何获得示例解决方案(A->0、B->10 等)的步骤,因为当我执行 n=3 的 Huffman 算法时,我得到的结果类似达到你的期望,而不是你得到的。
-
我将三个最不可能的字符 B、C、D 组合起来得到一个概率为 0.6 的超字符 BCD。接下来,我必须找到 A 的 Huffman 码和概率为 0.4 和 0.6 的 BCD。我将 0 分配给 A,将 1 分配给 BCD。然后我解开 BCD,得到 B 为 10,C 为 11,D 为 12。
-
哦,我知道你哪里错了,我会在答案中解释,等等。
-
抱歉信息不正确,我已经用更正确的版本和正确的参考更新了我的答案。
标签: algorithm compression huffman-code