证明时间复杂度函数的效率等级

时间:2014-09-18 10:05:51

标签: performance algorithm time-complexity proof induction

以下是解决方案,但我无法通过感应部分理解1部分证明。为什么你只能在一侧增加+ 2而在另一侧添加+4?

我们正在处理函数T(n) = 2n + 2

我们希望找到一个c,T(n) <= c * f(n)代表大 n

我们有T(n) = 2n + 2f(n) = n,因此我们需要2n + 2 <= c * n

我们解决 c 并获取2 + 2/n

在n = 0时未定义

2/n,因此我们选择t >= 1。我们会选择t=1,所以c=4

归纳证明:

         T(n) <= c * f(n)
     (2n + 2) <= (4)(n)
          +2     +4              <---- Don't understand
      2n + 4  <= 4n + 4
2(n + 1) + 2  <= 4(n + 1)
     T(n + 1) <= c * f(n + 1)

结论: 2n +2∈O(n)

1 个答案:

答案 0 :(得分:1)

如果2n+2 <= 4n,通过在左侧添加2,向右手添加4,则向左侧添加较少,因此如果2n+2 <= 4n,则必须2n + 2 <= 4n + 4

所以,你基本上从2n+2 <= 4n(从归纳假设认为是真的)跳到2n+4 <= 4n+4,因为2<42n+2<=4n。您后来发现,在下一行中,n+1对于诱导假设的主张也是正确的。