分治Divide and conquer

把问题分成较小子问题,分别求解并组合结果。

核心约束
子问题与合并步骤共同保留原问题语义。
适用问题
归并排序、分块计算与递归分解。
边界与取舍
不能仅凭递归形式推断复杂度,需分析递推关系。

时间与空间#

a 为子问题数量,n/b 为子问题规模,f(n) 为分割与合并工作。

时间成本
由递推式 T(n) = a T(n/b) + f(n) 决定
空间成本
由递归深度、子问题是否并行和临时数组决定

例如归并排序 a=2、b=2、f(n)=O(n)O(n),得到 O(nlog⁡n)O(n \log n)。主定理有适用条件,不能处理所有不均匀分割;递归树可用于核算各层工作。

工程中的应用#

1 个案例 · 附源码
基础原理参考资料

MIT 6.006 · Sorting通过归并排序分析分治递推与合并成本。

6 个概念