Skip to content

定理Theorem

主定理

施工中 · 内容逐步修订

Master theorem · Master method

比较递归子问题总量与合并成本,快速求解一类分治递推式的渐近界。

形式陈述 ​

固定整数 a≥1、常数 b>1,先只在规模 n=bh、h=0,1,2,… 上考虑递推关系

T(n)=aT(n/b)+f(n)(n≥b),T(1)=c0>0.

假定所有这些非基例规模都满足 f(n)≥0,所有参数与 n 无关。令 d=logb⁡a,用渐近记号表述三类结论:

  1. 若存在固定 ε>0 使 f(n)=O(nd−ε),则 T(n)=Θ(nd)
  2. 若 f(n)=Θ(ndlogk⁡n),其中固定 k≥0,则 T(n)=Θ(ndlogk+1⁡n)
  3. 若存在固定 ε>0 使 f(n)=Ω(nd+ε),且存在固定 0<c<1,对充分大的规模有 af(n/b)≤cf(n),则 T(n)=Θ(f(n))

第一、三类要求多项式级的间隔;第三类还要求缩放正则性。第二类这里采用包含非负对数幂的常见扩展。任意整数规模的取整递推需要另给基例范围与取整分析,本节的幂点版本不自动覆盖所有改写。

直觉

递归树法把第 i 层展开为 ai 个规模 n/bi 的子问题,所以该层的非递归成本是

aif(n/bi).

共有 h=logb⁡n 个内部层,叶子总成本为 ahc0=c0nd。

当 f 比 nd 小一个多项式因子时,靠近叶层的工作主导;当它具有同一临界幂次时,需要累加各层的对数项;当根部成本更大且缩放受控时,各层成本向下几何衰减。主定理把这些求和结果整理成可复用的模板。

主定理的三种主导项
例子与边界

T(n)=2T(n/2)+n 属于第二类,得到 Θ(nlog⁡n)。T(n)=4T(n/2)+n 的临界幂次为 n2,属于第一类,得到 Θ(n2)。T(n)=2T(n/2)+n2 属于第三类,且 2(n/2)2=n2/2 满足正则条件,也得到 Θ(n2)。后两式阶相同,主导工作的层次却不同。

二分型递推 T(n)=T(n/2)+1 的 d=0,仍属于第二类,结论为 Θ(log⁡n)。若 f(n)=ndlog⁡log⁡n,它不落在这里列出的固定非负对数幂情形;若有 T(n/2)+T(n/3) 两种分割规模,也已超出单一 b 的模板。

非负成本和正基例共同保住叶子下界。例如 T(1)=1、a=b=2,却取 f(2)=−2、后续幂点上的 f(n)=0,就会得到 T(2)=T(4)=⋯=0。“最终非负”本身不能排除这种早期抵消;算法运行成本应在进入所用基例以上的全部层都采用非负费用。

归并排序的上下取整递推可通过夹逼或归纳取得相同的 nlog⁡n 界。这里起作用的是实际递推的规模控制与基例,不能只把下取整符号擦掉就当作证明。

推论与应用

分治算法常先导出规则递推,再检查它落在哪一类。代入法可以验证猜测并处理取整、边界或附加项;Akra–Bazzi 方法则处理更一般的不等规模分支。

成本单位同样需要保持一致。缓存无关模型为块传输建立自己的递推,Work–Depth 模型分别建立总工作和关键路径递推;串行时间的解不会自动替代这些资源。精确指数算法中按参数下降量写出的 T(k)=T(k−d1)+T(k−d2),也应使用相应的分支分析。

参考资料
  • Thomas H. Cormen、Charles E. Leiserson、Ronald L. Rivest、Clifford Stein,Introduction to Algorithms, 4th ed., MIT Press, 2022,§§4.5–4.6:主方法与递归树证明。
  • Mohamad Akra、Louay Bazzi,“On the Solution of Linear Recurrence Equations”,Computational Optimization and Applications 10, 1998,pp. 195–210。
关系图谱6 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

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

使用的工具