【问题标题】:Length of binary encoding in Huffman algorithm?霍夫曼算法中二进制编码的长度?
【发布时间】: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


【解决方案1】:

使用 Huffman 算法时出现的最长二进制编码的长度等于树的高度,在本例中为 4。因此最长长度为 4。

很容易看出,当你将0分配给左分支,将1分配给右分支(你也可以反之亦然),代码将是:

50: 0

10: 1000

10: 1001

10: 1010

10: 1011

15: 110

15: 111

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多