最大高度的霍夫曼树,好问题?

时间:2015-02-27 14:15:02

标签: algorithm data-structures tree compression huffman-code

我在DS课程的一个家庭作业解决方案中遇到了一个很好的问题。 以下哪一项(for large n)为Huffman Tree创建了最高的高度。以下选项中每个序列的元素显示the frequencies of character in input text并且未显示字符。

1) sequence of n equal numbers

2) sequence of n consecutive Fibonacci numbers.

3) sequence <1,2,3,...,n>

4) sequence <1^2,2^2,3^2,...,n^2> 
  

任何人都可以说,为什么这个解决方案选择(2)?感谢任何人。

1 个答案:

答案 0 :(得分:3)

让我们在这里分析各种选项。

N个相等数字的序列表示将使用底部叶节点处的实际符号创建平衡树。

same numbers

序列1-N具有以下属性:当您开始对两个最低元素进行分组时,它们的总和将快速超过其他元素,这是一个示例:

1-N sequence

正如你所看到的,4 + 5和7 + 8的组本身并没有对树的高度做出贡献。

在将两个3节点分组为6之后,节点4和5成为下一个节点,这意味着形成的每个新组都不会对其高度做出贡献。大多数会,但不是全部,这是重要的事实。

使用正方形的序列(注意:问题中第三个序列中的正方形,1^2, 2^2, 3^2, 4^2, ..., N^2,而不是方形图元素)与1-N序列的行为有些相同,有些时候是其他元素将使用刚刚形成的那个,这将减少高度:

squares

正如你在这里看到的那样,36 + 49也是如此,它对树的高度没有贡献。

然而,斐波那契序列不同。当您对两个最低节点进行分组时,它们的总和最多会推翻下一个项目但不会超过其中一个,这意味着正在形成的每个新组也将在下一个项目中使用,以便每个新组形成将有助于树的高度。这与其他3个例子不同。

fibonacci sequence