递归复杂度算法如何计算草稿

以二分法寻找算法为例,在数组 A[p..q] 中寻找v值:

NewImage

 

 

代入法

        代入法的基本步骤是先推测递归方程的显式解,然后用数学归纳法来验证该解是否合理。

        上面二分法计算时间的递归方程为:T(n) = 2T(n/2) + O(n),其中T(1) = O(1),我们猜测一个解T(n) = O(n2 ),根据符号O的定义,对n>n0,有T(n) < cn2 - eO(2n)

(注意,这里减去O(2n),因其是低阶项,不会影响到n足够大时的渐近性),把这个解代入递归方程,得到:


T(n) = 4T(n/2) + O(n)
≤ 4c(n/2)2 - eO(2n/2)) + O(n)
= cn2 - eO(n) + O(n)
≤ cn2

其中,c为正常数,e取1,上式符合 T(n)≤cn2 的定义,则可认为O(n2 )是T(n)的一个解,再用数学归纳法加以证明。

参考资料:

递归算法的时间复杂度分析
http://blog.csdn.net/metasearch/article/details/4428865 

原文地址:https://www.cnblogs.com/ghj1976/p/3093124.html