我试图通过使用替换方法来解决重现问题。递归关系是:
T(n) = 4T(n/2) + n^3 + n*(log(n))^2
我也尝试用master方法解决这个问题。
答案 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))^2
与T(n) = 4T(n/2) + n^3
相同。
现在使用master theorem,您有a=4
,b=2
,因此c = logb(a) = 2
。由于n^c
增长速度低于f(n) = n^3
,因此您会陷入第三种情况,时间复杂度为O(n^3)