以n和d表示的n元素的d-ary堆的高度

时间:2017-06-11 09:54:16

标签: algorithm heap

我通过以下方法解决了这个问题: -

  1. n< = 1 + d + d 2 + ...... + d h
  2. n> = 1 + d + d 2 + ...... .. + d h-1 +1
  3. 这两个等式使我得到以下范围的h: -

    log d ((n(d-1)+1)/ 2)< = h< = log d ((n-1)(d -1)+1)

    但是我无法弄清楚如何从这个不等式中进一步推断出h = big-theta(log d n)?

2 个答案:

答案 0 :(得分:2)

n个级别的完整d堆中的项目数是(1-d n )/(1-d)。七级二进制堆包含127个项目。七级4堆将包含5,461(16383/3)个项目。

一个小代数告诉我们在d堆中保存n个项目所需的级别数是log d (n *(d - 1)+ 1)。因此,包含21个项目的4个堆需要log 4 (20 *(4 - 1)+1)或2.96个级别。我们不能有部分级别,所以我们最多可以达到3级。

有关详细信息,请参阅我的博客文章The d-ary heap

答案 1 :(得分:0)

A more Mathematically correct solution has been provided to my question in math.stackexchange.com. Please refer to the link below to look at the proof:

https://math.stackexchange.com/questions/2318306/height-of-a-d-ary-heap-of-n-elements-in-terms-of-n-and-d

Thanks.