复发的时间复杂度T(n)= 2T(n-1)+ 4

时间:2014-03-30 07:50:00

标签: recursion data-structures time-complexity

复发的时间复杂度T(n)= 2T(n-1)+ 4?

我有严重的问题。 我试过了:

T(n)= 2T(n-1)+4 = 2(2T(n-2)+4)+4 = 4T(n-2)+12 = 4(2T(n-3)+4) )+4 = 8T(n-3)+20 = 8(2T(n-4)+4)+4 =  16T(n-4)+36 = ......

T(n)= 2 ^ kT(n-k)+(4 + 2 ^(k + 1))

所以它看起来像T(n)= 2 ^ n +(4 + 2 ^(n + 1))但它似乎没有...请帮助:(

3 个答案:

答案 0 :(得分:4)

你的计算错了。我在这里假设T(0)=0

T(n) =                       2T(n-1)+  4 
     =   2(2T(n-2)+4)+  4 =  4T(n-2)+ 12
     =   4(2T(n-3)+4)+ 12 =  8T(n-3)+ 28 
     =   8(2T(n-4)+4)+ 28 = 16T(n-4)+ 60
     =  16(2T(n-5)+4)+ 60 = 32T(n-5)+124
     =  32(2T(n-6)+4)+124 = 64T(n-6)+252

然后现在:看一下序列

0,4,12,28,60,124,252,508,1020,2044,...

在所有这些数字中添加4是非常诱人的:

4,8,16,32,64,128,256,512,1024,2048,...
你知道吗?所以猜测显然是

T(n) = 2^(n+2) - 4

现在,您可以通过归纳轻松证明这一点。

顺便说一句,如果T(0)不等于0,公式就是

T(n) = 2^(n+2) - 4 + T(0)*2^n

答案 1 :(得分:3)

解决了递归关系,我发现了这个:

enter image description here

答案 2 :(得分:2)

T(n) = 2T(n-1) + 1

然后,n = log m,我们得到T(log m)=2T(log m - log 2) + 1

假设S(a) = 2S(a/2) + 1

应用硕士定理,我们得到:        n^logb^a = n^log2^2 = n

n^log2^2-1 = 1,此处€ = 1

首先我们得到:S(a) = O(a)

因此T(n) = O(2^n)