【算法设计与分析】11 递归树

当前面所学习的迭代法、差消法等不太好解决的问题,可以使用递归树,来很方便的解决。

文章目录

    • 1. 递归树的概念
      • 1.1 迭代在递归树中的表示
    • 2. 递归树的生成规则
      • 2.1 递归树生成实例
      • 2.2 递归树应用实例
    • 3. 总结

1. 递归树的概念

  • 递归树是迭代计算的模型
  • 递归树的生成过程与迭代过程一致
  • 递归树上的所有项恰好是迭代之后产生的和式中的项
  • 对递归树上的项求和,就是迭代后方程的解

1.1 迭代在递归树中的表示

如果递归树上某节点记为:W(m),则:
【算法设计与分析】11 递归树_第1张图片

举个例子,二分归并排序的时间复杂度的递推式子对应的递归树为:

【算法设计与分析】11 递归树_第2张图片

2. 递归树的生成规则

  • 初始,递归树只有根节点,其值为:W(n)
  • 不断继续下述过程:
  1. 将函数项叶节点的迭代式W(m)表示成二层子树
  2. 用该子树替换该叶节点
  • 继续递归树的生成,直到树种无函数项(只有初值)为止

2.1 递归树生成实例

下面还是以二分归并的例子来说明递归树的生成过程:

【算法设计与分析】11 递归树_第3张图片
【算法设计与分析】11 递归树_第4张图片

最终形成递归树:

【算法设计与分析】11 递归树_第5张图片

  • 然后对上面递归树每个节点相加进行求和,即可得到W(n)的值:【算法设计与分析】11 递归树_第6张图片

这与前面求得的结果一样。

2.2 递归树应用实例

求解:
在这里插入图片描述
它的递归树为:

【算法设计与分析】11 递归树_第7张图片

观察上面的递归树,每一行的和都是n。但是因为左边子树短一些,右边子树长一些,所以最终的极限末尾处,左边已经没有节点,但是右边还有节点,但是此时右边的节点和不会超过n,所以取其极限O(n).

然后对上面的式子进行求和:
【算法设计与分析】11 递归树_第8张图片
可以看出利用递归树,可以很容易的求出上述的结果,但是利用迭代就比较麻烦。

3. 总结

  • 递归树是迭代的图形表示
  • 学会递归树的生成规则
  • 学会使用递归树求解递推方程的解

你可能感兴趣的:(算法设计与分析)