【问题标题】:HuffmanCode variable bits length per character每个字符的 HuffmanCode 可变位长度
【发布时间】:2014-01-16 10:05:36
【问题描述】:

有没有办法在不绘制霍夫曼树的情况下只找到每个字符的“位数”? 换句话说,有没有办法通过字符的“频率”或“概率”来找到字符的码长?

注意:我想使用“可变长度代码”。 请使用以下句子进行解释:

“这是一个霍夫曼树的例子” 例如“a”霍夫曼码有 3 位长度。

以下站点有霍夫曼树,霍夫曼代码和这句话的频率: http://en.wikipedia.org/wiki/Huffman_coding

【问题讨论】:

  • 如果您想要每个编码符号的确切位数,那么我的猜测是答案是 - 不,您必须使用符号频率表(直方图)来构建霍夫曼树并获得每个符号的确切位编码......但我想不出这个猜想的任何数学证明。

标签: bit huffman-code


【解决方案1】:

您可以计算一组符号中每个符号的粗略零阶熵。给定符号集 a_i,其中每个符号的概率为 p_i(因此 p_i 的总和为 1),则 a_i 的熵(以位为单位)为 -log2(p_i),其中 log2 是以 2 为底的对数。一个符号的平均熵是 -p_i log2(p_i) 在 i 上的总和。

这可以粗略估计您将从霍夫曼或这些符号的算术零阶编码中得到什么。该估计将提供一个下限,由于估计,霍夫曼和算术都不会达到该下限,并且在霍夫曼的情况下,代码仅限于位分辨率。

【讨论】:

  • 谢谢。所以没有办法计算出确切的位数
  • 如果想准确计算霍夫曼码需要多少比特,那么您必须有效地制作霍夫曼树。
猜你喜欢
  • 1970-01-01
  • 2015-02-26
  • 2011-08-25
  • 1970-01-01
  • 2021-04-26
  • 2022-11-03
  • 1970-01-01
  • 1970-01-01
  • 2020-03-11
相关资源
最近更新 更多