计算复杂度T(n)= T(n-1)+ n

时间:2017-11-19 12:16:40

标签: recursion complexity-theory

我必须计算T(n)= T(n-1)+ n的计算复杂度和计算复杂度等级。 我的问题是,我不知道有任何方法可以这样做,而我唯一熟悉的是普遍递归,它并不适用于这项任务。

1 个答案:

答案 0 :(得分:1)

T(0) = a
T(n) = T(n-1) + n

n    T(n)
---------
0    a
1    T(1-1) + n = a + 1
2    T(2-1) + n = a + 1 + 2
3    T(3-1) + n = a + 1 + 2 + 3
...
k    T(k-1) + n = a + 1 + 2 + ... + k
                = a + k(k+1)/2

基于以上猜测T(n)= O(n ^ 2)。我们可以通过归纳来证明这一点。

基本情况:T(1)= T(0)+ 1 = a + 1< = c * 1 ^ 2,条件是c> = a + 1。

归纳假设:对于直到并包括k的所有n,假设T(n)<= c * n ^ 2.

诱导步骤:显示T(k + 1)<= c *(k + 1)^ 2。我们有

T(k+1) = T(k) + k + 1 <= c*k^2 + k + 1
<= c*k^2 + 2k + 1          // provided k >= 0
<= c*(k^2 + 2k + 1)        // provided c >= 1
= c*(k+1)^2

我们知道k> = 0并且我们可以选择c为+ 1和1中的较大者,由于T(0)是非负的,因此必须合理地为+ 1。