我正在尝试解决这种复发问题
T(n)= 3T(n / 2)+ n lg n ..
我已经得出它属于主人定理案例2的解决方案,因为n lg n是O(n ^ 2)
但在参考解决方案手册后,我注意到他们有这个解决方案
解决方案说,对于0到0.58之间的e,n lg n = O(n ^(lg 3 - e))
所以这意味着n lg n是O(n)..这是对的吗?我在这里错过了什么吗?
不是nlgn O(n ^ 2)?
答案 0 :(得分:78)
这将更好地解释事情
答案 1 :(得分:14)
n*log(n)
不是O(n^2)
。它被称为准线性,它比O(n^2)
生长得慢得多。实际上n*log(n)
小于多项式。
换句话说:
O(n*log(n)) < O(n^k)
其中k > 1
在你的例子中:
3*T(2n) -> O(n^1.585)
由于O(n^1.585)
是多项式并支配O(n*log(n))
,后一项会下降,因此最终的复杂性仅为O(n^1.585)
。
答案 2 :(得分:6)
n lg3 不是O(n)。它超过了O(n)......实际上,n上任何大于1的指数都会导致渐近时间比O(n)更长。由于lg(3)约为1.58,只要从指数中减去小于.58,它就渐近地大于O(n)。