【发布时间】:2016-06-12 01:21:36
【问题描述】:
使用 Huffman 时出现的最长二进制编码的长度是多少 权重为 10、10、10、10、15、15、50 的算法?
有没有一种快速的方法可以做到这一点,或者我必须构建树然后计算我猜的平均位数:
= 总长度/位数
这是我生成的树:
【问题讨论】:
-
嗯,是的,有一个快速的方法。只有七个重量,用铅笔和纸画树大约需要一分钟。假设您了解霍夫曼编码算法。
-
@jim 我创建了这棵树。我现在该怎么做?
-
是的,你必须制作树。您可以从熵中找到一个下限,即概率总和乘以概率的对数(以 2 为底)的负数。
-
@Mark 这样的:(10*4 + 10*4 + 10*4 + 10*4 + 15*3 +15*3 + 50*1)/120 = 2.5 这是平均值我猜每个字符 # 位?
-
不,下限(熵)是 2.47 位。是的,答案是 4。您只需计算问题中树中叶子的最大分支数即可。
标签: algorithm data-structures graph tree huffman-code