求解T(n)= 4T(n / 2)+ n ^ 3 + n *(log(n))^ 2

时间:2014-11-11 16:51:24

标签: math data-structures runtime recurrence

我试图通过使用替换方法来解决重现问题。递归关系是:

T(n) = 4T(n/2) + n^3 + n*(log(n))^2

我也尝试用master方法解决这个问题。

2 个答案:

答案 0 :(得分:1)

您可以使用的第一次补救是n = 2^k。你的复发成为:

  

T(2 ^ k)= 4T(2 ^(k-1))+ 2 ^(3k)+ 2 ^ k * log(2 ^ k)^ 2

  

T(2 ^ k)= 4T(2 ^(k-1))+ 2 ^(3k)+ c * k ^ 2 * 2 ^ k

其中c = (log 2)^2

在另一次替换之后S(k) = T(2^k)除以4^k我们得到

  

S(k)/ 4 ^ k = S(k-1)/ 4 ^(k-1)+ 2 ^ k + c * k ^ 2/2 ^ k

我们的最终判决是R(k) = S(k) / 4^k,新的复发是

  

R(k)= R(k-1)+ 2 ^ k + c * k ^ 2/2 ^ k

通过伸缩(即将这些等式求和为k = 2,3,...,n)得到

  

R(n)= R(1)+ sum(2 ^ k)+ c * sum(k ^ 2/2 ^ k)

(其中两个总和从k = 1到k = n - 1)。

最后,

  

R(n)= R(1)+ 2 ^ n - 1 + c *(6 - (n ^ 2 + 2n + 3)/ 2 ^(n-1))。

从最后一个等式可以很容易地找到

T(2^k)。对于T(n)的其他值(当n不是2的幂)时,如果没有其他假设(例如,连续性),则没有足够的数据。

答案 1 :(得分:0)

从时间复杂度的角度来看,T(n) = 4T(n/2) + n^3 + n*(log(n))^2T(n) = 4T(n/2) + n^3相同。

现在使用master theorem,您有a=4b=2,因此c = logb(a) = 2。由于n^c增长速度低于f(n) = n^3,因此您会陷入第三种情况,时间复杂度为O(n^3)