【发布时间】:2013-02-03 21:40:04
【问题描述】:
众所周知,具有最小方差的霍夫曼代码更可取。 我已经浏览了整个波兰语/英语互联网,这就是我发现的: 要构建具有最小方差的霍夫曼代码,您需要使用以下方法之一打破联系(当然节点的概率是最重要的):
- 选择代表最短树的节点
- 选择最早创建的节点(将叶子视为在开始时创建的)。
问题是,我找不到任何这些方法正确性的证据。 有人可以证明这些吗?
我很乐意澄清任何事情。
【问题讨论】:
-
如果您想进行数学证明,您可能想在 math.stackexchange.com 或 cs.stackexchange.com 上询问。
-
我不知道我是否做对了,但我将问题复制到了 math.stackexchange.com。感谢您的建议!
-
霍夫曼码是最小化熵的代码,即每个符号的位数。如果几个符号具有相同的概率,那么如何解决这种平局在代码效率方面没有任何区别。霍夫曼在他的原始论文中提到了这一点。然而,重要的是编码器和解码器坚持相同的平局解析策略。我没有严格的“证据”,但是是什么让您怀疑打破平局规则会影响最终的比特率?
-
霍夫曼代码最优性的一般证明在这里:cse.ust.hk/faculty/golin/COMP271Sp03/Notes/MyL17.pdf
-
你说的不对。举个例子,你想通过网络(带宽 3kbit/s)发送编码字符串并实时解码。确实,在要发送的平均位数方面如何打破平局并不重要。但是,它确实改变了代码长度的变化,所以如果你的平均值是 2.2kbit/s 但你的方差很高,那么你最终可以发送 1kbit/s(而不是使用所有可用带宽)或 4kbit/s(带宽将成为瓶颈)。因此,打破关系方法确实很重要,因为它可以降低方差。
标签: algorithm compression proof huffman-code