Skip to content

方法Method

递归式代入法

施工中 · 内容逐步修订

Substitution method for recurrences

先猜测渐近界再用归纳代入验证并调节常数的方法。

形式陈述 ​

代入法先猜测递推关系的解界,再用数学归纳法核对基例和递推步。待证界中的常数必须统一选定,不能随当前规模改变。上界和下界分别证明后,才可用渐近记号报告紧确阶。

例如,对 n=2h 考虑 T(1)=t0>0、T(n)=2T(n/2)+n。从 n=2 起猜测 T(n)≤cnlog2⁡n。此时 T(2)=2t0+2,选 c≥max{1,t0+1} 即覆盖基例。对 n≥4,子问题规模至少为2,归纳给出

T(n)≤2c(n/2)log2⁡(n/2)+n=cnlog2⁡n+(1−c)n≤cnlog2⁡n.

从2而非1开始很重要:正的 T(1) 不可能小于等于 c⋅1⋅log2⁡1=0。原递推仍有规模1基例,只是待证估计以规模2为归纳起点。

直觉

猜测给出希望证明的增长率,归纳代入检验递推是否会把它推高。需要的松弛可能来自主项常数,也可能来自一个精心选择的低阶修正项;调整的目的,是让每次递推都留下足够空间支付本层工作。

递归参数必须严格更小。对一般整数规模,可以用所有较小情形作为归纳假设;对上面的幂点序列,也可以对高度 h 作普通归纳。两种写法都要覆盖实际递归能到达的基例。

递归式代入法的猜测、代入与闭合

图中 log 以2为底,归纳假设只用于 2≤m<n 的幂点;基例门槛 c0 可取为前述 t0+1。这样图示的常数条件与规模2的归纳起点一致。

例子与边界

何时真的需要低阶修正 ​

对 T(1)=1、T(n)=2T(n/2)+1,直接猜 T(n)≤cn 会给出 T(n)≤cn+1,无论怎样加大 c,这一归纳步骤都没有闭合。换成 T(n)≤cn−d,便得到

T(n)≤2(cn/2−d)+1=cn−2d+1≤cn−d

只要 d≥1。再取 c≥d+1 处理规模1基例,线性上界就得到证明。事实上此递推的精确解为 2n−1,修正项正好对应树中内部节点数比叶子数少一。

取整与基例区间 ​

若 T(n)=T(⌊n/2⌋)+1 对 n≥2 成立,且 T(0),T(1)=O(1),取整不会破坏参数严格下降。可以直接逐次减半计数,也可以加强为覆盖 n=0,1 的 clog2⁡(n+1)+d 后作归纳。只猜 cn 虽可能得到真上界,却没有说明对数阶。

上界证明应把子问题代入上界,下界证明应代入下界;有减项时,还须检查不等式方向和符号。只在若干规模上数值吻合,是寻找猜测的线索,并未覆盖所有递归规模。

推论与应用

递归树法和主定理可以产生候选增长率,代入法负责检查常数、基例和误差项。加入一个修正项之后,仍应说明它在目标渐近范围内不改变主阶。

有界搜索树按参数 k 递推,须区分参数函数与输入长度上的多项式因子。工作—深度模型又为同一并行算法建立 W(n) 和 D(n) 两条递推:子问题的工作相加,独立子问题的深度取最大。代入技巧相同,但待证对象和组合规则要分别写清。

参考资料
  • Thomas H. Cormen、Charles E. Leiserson、Ronald L. Rivest、Clifford Stein,Introduction to Algorithms, 4th ed., MIT Press, 2022,§4.3:递推式的代入法。
  • Jon Kleinberg、Éva Tardos,Algorithm Design,Pearson,2005,Chapter 5:分治递推与归纳分析。
关系图谱6 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

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

使用的工具