T(n)= 2T(n-1)+ O(N)的递归关系和大O是多少?

时间:2015-10-04 21:10:42

标签: big-o complexity-theory

我认为会是这样的......

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

     = 2(2T(n-2)+(n-1)) + (n)
     = 2(2(2T(n-3)+(n-2))+(n-1))+(n)
     = 8T(n-3) + 4(n-2) + 2(n-1) + n

这最终类似于2 i *(n-i)的总和,而我的书说最终为O(2 n )。有人可以向我解释一下吗?我不明白为什么它是2 n 而不仅仅是O(n),因为(n-i)将继续n次。

1 个答案:

答案 0 :(得分:1)

Math Stack Exchange已经解决了这种复发问题。当我解决这个问题时,我得到:

T(n) = n + 2(T(n-1))
     = n + 2(n - 1 + 2T(n-2))            = 3n - 2 + 2^2(T(n-2))
     = 3n - 2 + 4(n - 2 + 2(T(n-3)))     = 7n - 10 + 2^3(T(n-3))
     = 7n - 10 + 8(n - 3 + 2(T(n-4)))    = 15n - 34 + 2^4(T(n-4))
                                         = (2^4 - 1)n - 34 + 2^4(T(n-4))

......等等。

有效地再次发生归结为:

  

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

请参阅Math Stack Exchange链接,了解我们如何实现此解决方案。将T(1)保持为常数,上述复发的主导因素是(2 (n + 1)

因此,给定复发的增长率 O(2 n