正如您在此链接中所看到的:http://en.wikipedia.org/wiki/D-ary_heap#Applications 它在维基百科中说d的最佳选择是d = m / n(它导致总时间复杂度为O(m logm / n n))
在我看来,这种猜测是凭空消失的。是否有一种简单的方法可以证明(甚至解释)这确实是最佳的d?
提前致谢
答案 0 :(得分:3)
根据解释本身,您可以推断出您有n个删除最小操作,每个操作都需要O(d log(n)/log(d))
,并且m减少O(log(n)/log(d))
的优先级操作。然后合并后的工作是(m*log(n)+n*d*log(n))/log(d)
。
如果填写建议的d值,则全局行为与O(m*log(n)/log(d))
一致。如果您采用任何其他d,其中一个术语比平均值更大,导致复杂性增加。