d-ary堆的运行时间?

时间:2012-06-23 02:12:01

标签: math computer-science

如何将d-Ary堆的运行时间从O(log d n)简化为O((log n)/(log d))?

正确的简化是: log d n = log d * log n

如何推导除法简化?

2 个答案:

答案 0 :(得分:4)

这使用公共标识在对数基数之间进行转换:

logx(z) = logm(z) / logm(x)

通过将两边乘以log m (x),得到:

logm(z) = logx(z) * logm(x)

这相当于您网站提问中的答案。

有更多信息here

答案 1 :(得分:3)

假设

x = logd(n)
我们已经等同,
n = dx
然后
log2n = log2(dx) = x log2(d)
按日志划分 2 (d)产生:
log2(n) / log2(d) = x 
所以
log2(n) / log2(d) = x = logd(n)

当然,假设d是固定的,那么log 2 (d)只是一个常数。所以

O( logd(n) ) = O( 1 / log2(d) * log2(n) ) = O( log2(n) )
也就是说,就Big-Oh表示而言,你可以为任何其他(例如)对数基数改变任何对数基数(大于1)。因此习惯于删除基数并写入O(log(n))