Skip to content

递归树法

Recursion-tree method

把递归式各层代价展开成树并对层和叶子求和的渐近分析方法。

条目类型
原则

形式陈述

递归树法把递推式如 T(n)=aT(n/b)+f(n) 展开为一棵调用树:第 i 层有 ai 个规模 n/bi 的子问题,层成本为 aif(n/bi),深度约 logbn,总成本为各层成本与叶成本之和。该方法是推导和猜测渐近界的工具;最后仍需处理取整、基例并用代入法或主定理严格证明。

直觉

递归树把递推式分散的工作展开成按深度排列的子问题,分别计算每层非递归工作和叶子成本,再求和。观察每层工作是递增、递减还是同阶,往往能直接看出总成本由根、所有层还是叶子主导;它比直接套公式更直观,也能处理部分不规则递归。但必须正确跟踪每层节点数、子问题规模和停止深度;这棵树是成本展开图,不一定对应算法真实存储的递归树。

递归树的层成本与总成本
例子与边界

T(n)=2T(n/2)+n 的第 i 层有 2i 个规模 n/2i 的节点,每层工作总和 n,共 logn 层,故 Θ(nlogn)T(n)=3T(n/2)+n 的第 i 层成本为 n(3/2)i,靠近叶层占优,结果为 Θ(nlog23)

作为对照,T(n)=T(n/2)+n 的层成本构成几何级数,总计 Θ(n);非均匀递推 T(n)=T(n/3)+T(2n/3)+n 也可画树,但深度不齐,需按路径或总规模仔细求和。递归树中节点数不能只乘“层数”,因为每层子问题大小会变化。

子问题不等规模时不能只写“每层节点翻倍”;需按实际分支加总。递归式中的取整、边界条件和叶成本也可能影响低阶项,若猜出结果仍最好用代入法做严格验证。

推论与应用

递归关系给出展开对象,渐近记号给出求和结果。主定理封装规则分治树,代入法则严格证明树形直觉得到的界。递归树本身只是一种成本展开,不预设成本必须是多项式。

有界搜索树按参数 k 展开分支,常得到 T(k)=iT(kdi)+poly(n)测度与征服进一步为不同状态赋权,改变每条分支的有效下降量。缓存无关模型中的递归分解还要按块传输求和,层成本不再只是 RAM 操作数。三者都能画树,但参数、叶成本和资源单位不同。

参考资料
  • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to Algorithms, 4th ed., MIT Press, 2022,§4.4。
  • Jon Kleinberg and Éva Tardos, Algorithm Design, Pearson, 2005,Ch. 5。
关系图谱7 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系