1

在我的中期,我遇到了问题:

T(n) = 8T(n/2) + n^3

我应该使用大师或替代方法找到它的大 theta 符号。所以我所做的是

a = 8, b = 2 k = 3

日志2 8 = 3 = k

因此,T(n) 是大 theta n 3。我得了 1/3 分,所以我一定是错的。我做错什么了?

4

1 回答 1

3

T(n) = aT(n/b) + f(n)

当 f(n) = O(n^(log_b(a) - e)) 对于某些 e > 0 时,您应用了该版本。

这很重要,对于某些 e > 0,您需要这样做。

对于 f(n) = n^3,b = 2 和 a = 8,

对于任何 e > 0,n^3 = O(n^(3-e))都不成立。

所以你选择了错误版本的主定理。

您需要应用不同版本的主定理:

如果 f(n) = Theta ((log n)^k * n^log_b(a)) 对于某些 k >= 0,

然后

T(n) = Theta((log n)^(k+1) * n^log_b(a))

在您的问题中,您可以应用这种情况,这给出了 T(n) = Theta(n^3 log n)。


解决问题的另一种方法是:

T(n) = 8 T(n/2) + n^3。

令 g(n) = T(n)/n^3。

然后

n^3 *g(n) = 8 * (n/2)^3 * g(n/2)+ n^3

即 g(n) = g(n/2) + 1。

这意味着 g(n) = Theta(logn),因此 T(n) = Theta(n^3 logn)。

于 2010-06-10T04:09:24.603 回答