递归式的求解学习笔记

本文参考自: 原文地址

递归式的求解

      递归式的求解主要有三种方法,分别是代入法、递归树法和主方法。递归式与分治方法紧密相连,因为使用递归式可以很自然地刻画分治算法的运行时间。换言之,对递归式进行求解有助于判断算法的优劣性,进而帮助我们选用更优的算法解决实际问题。


一、代入法求解递归式 

      用代入法对递归式进行求解需要分两步进行:

      1. 猜测解的形式;

      2. 用数学归纳法求出解中的常数,并证明解是正确的。

      在猜测解的形式时,由于并不存在获得正确解的通用方法,因此这一步骤需要经验。一般而言,如果待求递归式的形式似曾相识,则猜测一个类似的解会是一种较便捷的方式。举例而言,假设已知递归式递归式的求解学习笔记的解为递归式的求解学习笔记,那么可以假设递归式递归式的求解学习笔记的解也为递归式的求解学习笔记,且使用代入法可证明该例子确实如此。除此之外,还有一种猜测方式是,首先证明递归式存在较为宽松的上界和下界,然后不断缩小范围。对于上述例子,可以从下界递归式的求解学习笔记,上界开始递归式的求解学习笔记,逐渐降低上界,提升下界,直到两者收敛,得到渐近界递归式的求解学习笔记

 

二、递归树法求解递归式

      递归树法也是求解递归式的一种方法。在递归树中,每一个节点表示一个单一子问题的代价,所谓子问题即算法中的递归函数调用。对递归树的每一层求和可以得到每一层的代价;对所有层求和便可以得到总的代价。举例而言,利用递归树法求解递归式的求解学习笔记的递归式,该式对应的递归树如图1.1所示。

递归式的求解学习笔记

图1.1  递归式递归式的求解学习笔记的递归树,其高度为递归式的求解学习笔记(有递归式的求解学习笔记层)

      因为子问题的规模每一步均减少为上一步的1/4,因此最终必然会达到临界条件。由于深度为i的节点对应的子问题的规模为递归式的求解学习笔记,因此递归树的层数为递归式的求解学习笔记层。对于每一层的代价,当深度为i时,每一层的总代价为递归式的求解学习笔记,另外树的最底层的总代价为递归式的求解学习笔记,因此,对所有层数求和便可以得到整个递归树的总代价。

      根据上述思路,可以对递归树的所有层次的代价求和,来确定整棵树的代价:

递归式的求解学习笔记


三、主方法求解递归式

      用主方法求解递归式依赖定理1。

      定理1:令递归式的求解学习笔记递归式的求解学习笔记是常数,f(n)是一个函数,T(n)是定义在非负整数上的递归式:

递归式的求解学习笔记

      其中我们将n/b解释为递归式的求解学习笔记递归式的求解学习笔记。那么T(n)有如下渐近界:

      1. 若对某个常数递归式的求解学习笔记递归式的求解学习笔记,则递归式的求解学习笔记

      2. 若递归式的求解学习笔记,则递归式的求解学习笔记

    3. 若对某个常数递归式的求解学习笔记递归式的求解学习笔记,且对某个常数递归式的求解学习笔记和所有足够大的n有递归式的求解学习笔记,则递归式的求解学习笔记