我无法弄清楚 f(n) 是什么?是 n^2 还是 2n^2 + n/3 ?如何解决这些问题?提前致谢
问问题
1510 次
1 回答
0
回忆主定理如下:给定递归方程
T(n) = b*T(n/c) + f(n),
它适用于E = log(b)/log(c)
:
- if
f(n)
is inO(N^(E - eps))
for someeps > 0
, thenT(n)
is inTheta(n^E)
; - 如果
f(n)
在Theta(N^E)
,则T(n)
在Theta(N^E * log(n))
; - 如果
f(n)
在Omega(N^(E + eps))
一些eps > 0
和另外b*f(n/c) <= d*f(n)
一些d < 1
并且n
足够大,则T(n)
在Theta(f(n))
.
否则,主定理对您没有帮助。(你可以从每一本关于算法的基础教科书中得到这个定义,或者使用谷歌。)
根据您的定义,我们有b = 9
andc = 3
和f(n) = 2*n^2 + n/3
。因此很容易证明案例 2 成立E = 2
并且f(n)
在 中Theta(n^2)
。因此,T(n)
在Theta(n^2 * log(n))
.
于 2016-09-07T14:44:17.190 回答