n 个元素的 d 元堆的高度,以 n 和 d 表示
Height of a d-ary heap of n-elements in terms of n and d
我通过以下方法解决了这个问题:-
- n <= 1+d+d2+…….+dh
- n >= 1+d+d2+……..+dh-1+1
这两个等式使我得出以下 h 范围:-
logd((n(d-1)+1)/2) <= h <= logd(( n-1)(d-1)+1)
但我不知道如何从这个不等式进一步推导出 h = big-theta(logdn)?
一个完整的n层d堆中的项目数是(1-dn)/(1-d)。七级二叉堆包含 127 个项目。七层 4 堆将包含 5,461 (16383/3) 个项目。
一点代数告诉我们,在 d 堆中容纳 n 个项目所需的层数是 logd(n*(d - 1) + 1)。因此,具有 21 个项目的 4 堆需要 log4(20*(4 - 1)+1),或 2.96 个级别。我们不能有部分级别,所以我们四舍五入到 3。
有关详细信息,请参阅我的博客 post、The d-ary heap。
我在 math.stackexchange.com 中的问题提供了更数学正确的解决方案。
请参考下面link看证明:
谢谢。
我通过以下方法解决了这个问题:-
- n <= 1+d+d2+…….+dh
- n >= 1+d+d2+……..+dh-1+1
这两个等式使我得出以下 h 范围:-
logd((n(d-1)+1)/2) <= h <= logd(( n-1)(d-1)+1)
但我不知道如何从这个不等式进一步推导出 h = big-theta(logdn)?
一个完整的n层d堆中的项目数是(1-dn)/(1-d)。七级二叉堆包含 127 个项目。七层 4 堆将包含 5,461 (16383/3) 个项目。
一点代数告诉我们,在 d 堆中容纳 n 个项目所需的层数是 logd(n*(d - 1) + 1)。因此,具有 21 个项目的 4 堆需要 log4(20*(4 - 1)+1),或 2.96 个级别。我们不能有部分级别,所以我们四舍五入到 3。
有关详细信息,请参阅我的博客 post、The d-ary heap。
我在 math.stackexchange.com 中的问题提供了更数学正确的解决方案。 请参考下面link看证明:
谢谢。