证明Fibonacci递归算法时间复杂度

时间:2011-09-30 08:12:52

标签: algorithm computer-science time-complexity fibonacci

我试图在我的算法教科书中通过归纳理解一个证明。这里的作者使用归纳证明T(n)总是大于2 ^(n / 2)(这是用于使用递归算法计算第n个斐波纳契数): enter image description here

我不明白的是最后一步,他在操纵方程式。他是怎么来的:

> 2^(n-1)/2 + 2^(n-2)/2 +1

> 2^(n-2)/2 + 2^(n-2)/2 +1

他只是随机将2^(n-1)/2更改为2^(n-2)/2。这是一个错误吗?

感谢。

2 个答案:

答案 0 :(得分:5)

这是故意的,如果你仔细观察它是不公平的,他会使用它完成诱导步骤。

注意拼写错误,应该说“我们必须证明T(n)> 2 ^(n / 2)”而不是<。

答案 1 :(得分:2)

我认为特定的一步是假设:

T(n-1) > T(n-2)

因此,我们可以形成代数不等式:

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

我们可以从右侧击落+ 1(因为对于在LESSER方面减去的任何东西,不平等仍然适用):

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

由此,替换我们的T(m)= 2 ^(m / 2)(对于小于n和> 2的任何东西,其中n-1和n-2都符合条件):

2^(n-1)/2 + 2^(n-2)/2 + 1 > 2^(n-2)/2 + 2^(n-2)/2

这会让你迈出这一步。正如我上面的海报所说的那样故意这样做,达到2 ^(n / 2)。

相关问题