通过归纳证明递归函数的复杂性

时间:2016-05-12 07:05:29

标签: asymptotic-complexity recurrence induction

我需要通过归纳证明 -

T(n) = T(n-1) + c2 , T(1) = c1 

The run time complexity is - T(n) = O(n)

在基础案例和归纳假设后的归纳步骤中,我写了 -

T(k+1) = T(k) + c2 = O(k) + c2 = O(k + 1)

但是为了证明这种运行时复杂性,我需要证明存在 C,N0> 0所以最终的不等式是真的。

如果有人可以告诉我如何找到/或更正我的感应。 感谢。

1 个答案:

答案 0 :(得分:1)

要通过归纳证明,你必须做三个步骤。

  
      
  1. 为n

  2. 定义命题P(n)   
  3. 对基本案例P(n_0)

  4. 显示n_0   
  5. 假设P(k)为真且展示P(k+1)也属实

  6.   

您似乎没有具体定义P(n)

所以请P(n) := there exists constant c(>0) that T(n) <= c*n.

你的诱导步骤将是这样的:

假设P(k)为真。然后P(k+1) = T(k) + c2

P(k)there exists constant c_k(>0) that T(k) <= c_k*k

所以T(k+1) = T(k) + c2 <= c_k*k + c2 <= (c_k+1)*k + (c_k+1) = (c_k+1)*(k+1)(如果我们选择c_k+1 = max(c_k, c2)

所以P(k+1)是真的。

因此,这些通过归纳证明了

for every n > n_0=1, there exists constant c(>0) that T(n) <= c*n.

  

P.S。 here你可以得到一些关于归纳的读物。此外,在麻省理工学院开放式课程中,课程6042J提供了很好的入门讲座和强大的归纳,你可以练习并获得直觉。