使用masters方法

时间:2010-06-10 04:01:52

标签: math master-theorem

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

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

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

a = 8,b = 2 k = 3

log 2 8 = 3 = k

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

1 个答案:

答案 0 :(得分:3)

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

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

这很重要,你需要这个对于某些e> 0

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

对于任何e> 1,

n ^ 3 = O(n ^(3-e))为真。 0

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

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

如果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)= 8T(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)。