递推方程的求解

    在计算算法分析的过程中,难免会遇到复杂度的递推方程,求解递推方程是获得复杂度关于输入规模n的函数的必然途径。
    目前,主要存在的求解递推方程的方法如下:
  1. 迭代法:
    1. 直接迭代法;
    2. 换元迭代法;
    3. 差消迭代法;
  2. 尝试法
  3. 主定理
  4. 迭代模型:递归树

一.迭代法

    迭代法主要思想就是将递推方程中右边的子表达式用更小的表达式代入,不断进行迭代,直到到达初值,然后就可以直接求解复杂度的函数了。


二.尝试法

    先猜想解是哪种类型的函数,给出这个函数表达式的一般形式,在这个表达式中可能含有某些特定参数,然后将这个函数代入原递推方程以确定这些参数的值。


三.主定理

   递推方程的求解_第1张图片
   在使用主定理的时候,必须考虑限制条件,特别是对于第三种情况下的,c必须是小于1的参数。



    

四.递归树

    不满足主定理使用形式或者满足主定理使用形式但是不满足使用条件的时候,可以考虑使用递归树方法。
    递归树的构建过程如下:初始的递归树的根节点为递推方程右边除了子函数项之外的部分,子节点为递推方程右边的子函数项,然后不断进行迭代,将子结点用子递归树代换,直到子节点不包含函数项为止。
    从递归树的构建过程可以看出,递归树中的所有结点的和即为递推方程的解。
    下面举一个例子来说:
     T(n)=T(1/3*n)+T(2/3*n)+n
     T(1)=1
    
     递归树的构建过程如下:
 递推方程的求解_第2张图片


    在递归树,每一层节点的和都为n,递归树的最深的深度为log3/2n,因此,递推方程的解为
    T(n)=nlgn

    







参考文献
[1] 屈婉玲, 算法设计与分析: 清华大学出版社, 2011.
[2] 科曼 and 金贵, 算法导论: 机械工业出版社, 2006.
[3] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein, "算法导论 (影印版)," ed: 北京: 高等教育出版社.
[4] 汝佳. 算法竞赛入门经典[M]. 清华大学出版社, 2009.






你可能感兴趣的:(算法,递推方程)