斐波那契数列可以派生出很多应用,其中,我们知道它的时间复杂性是指数级的,现在就来粗略地证明一下:

斐波那契数列递推式:

F(n)=F(n-1)+F(n-2)

F(1)=F(2)=1

粗略证明可以利用Decision_Tree,为了更直观,我引用另一个恒等函数 f(x)=0 ;x=1,2,3,4,5,............

所以斐波那契数列递推式变形如下:

F(n)=F(n-1)+F(n-2)+f(n)

F(1)=F(2)=1

画出Decision_Tree

 
  1. //          F(n)=    f(n)  
  2. //                /       \  
  3. //          f(n-1)         f(n-2)  
  4. //         /       \        /   \  
  5. //    f(n-2)     f(n-3) f(n-3   f(n-4)  
  6. //      .           .     .       .   
  7. //     .             .   .         f(2)  
  8. //    /    \                        \  
  9. //  f(1)  f(2)                       1  
  10. //  / \     /\  
  11. // 1   1   1  1  

因为f(n)恒等于0,所以F(n)等于叶子结点的总和乘以Theta(1).最长链路是最左子树,最短链路是最右子树。

所以有:2^(n/2)<F(n)<2^n,即F(n)=theta(2^n).

精确证明:

posted on 2013-09-29 01:07  LifeStudio  阅读(465)  评论(0编辑  收藏  举报