在我的期中我遇到了问题:
T(n) = 8T(n/2) + n^3
我应该使用主人或替代方法找到它的大theta符号。所以我做的是
a = 8,b = 2 k = 3
log 2 8 = 3 = k
因此,T(n)是大θ 3 。我得到1/3分,所以我一定是错的。我做错了什么?答案 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)。