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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_37375427/article/details/100864530

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

1. 递归树的概念

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

1.1 迭代在递归树中的表示

如果递归树上某节点记为:W(m),则:
在这里插入图片描述

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

在这里插入图片描述

2. 递归树的生成规则

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

2.1 递归树生成实例

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

在这里插入图片描述
在这里插入图片描述

最终形成递归树:

在这里插入图片描述

  • 然后对上面递归树每个节点相加进行求和,即可得到W(n)的值:在这里插入图片描述

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

2.2 递归树应用实例

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

在这里插入图片描述

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

然后对上面的式子进行求和:
在这里插入图片描述
可以看出利用递归树,可以很容易的求出上述的结果,但是利用迭代就比较麻烦。

3. 总结

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

猜你喜欢

转载自blog.csdn.net/qq_37375427/article/details/100864530