使用输入字符模式(或频率)确定霍夫曼树的深度?

时间:2016-02-14 11:53:31

标签: algorithm math data-structures huffman-code greedy

我想作为this question regarding Huffman tree building的变体。无论如何都要从输入(或频率)计算霍夫曼树的深度,而不绘制树。

如果没有快捷方式,那该问题的答案是如何找到的?具体示例是:频率为1到10的10输入符号为5.

1 个答案:

答案 0 :(得分:1)

如果您正在寻找一个方程来获取频率并给出深度,那么不,不存在这样的等式。证据是存在一组频率,在应用导致不同深度树的霍夫曼算法时,您将有任意选择!因此,对于&#34来说,甚至没有一个独特的答案;霍夫曼树的深度是多少?"对于某些频率组。

一个简单的例子是频率为1,1,2和2的集合,根据应用霍夫曼算法时配对的最小频率,可以给出2或3的深度。

获得答案的唯一方法是应用霍夫曼算法。你可以采取一些快捷方式来获得深度,因为你不会在最后使用树。但无论如何,你都将有效地建造树木。

您可能能够使用熵方程近似深度,或者至少对其进行界限。在某些特殊情况下,边界可能具有足够的限制性,可以为您提供精确的深度。例如。如果所有频率相等,则可以将深度计算为符号数的对数基数2的上限。

一个很酷的例子表明,当你使用Fibonacci序列作为频率时,简单的熵限度不足以得到确切的答案。这确保树的深度是符号的数量减1。因此,即使最低频率符号的熵,频率1,1,2,3,5,8,13,21,34,55,89,144,233,377和610也将产生14比特的深度是10.64位。