【初赛】主定理 总结
主定理
(ai教的)
在主定理中,f(n) 不仅参与计算,而且是核心判断依据。
它代表分治算法中"非递归部分的时间代价"(即分解问题与合并子问题结果的总时间),主定理的本质就是通过对比 f(n) 与"子问题总求解代价的渐近量级"(即 n^(log_b a)),来确定整个算法的时间复杂度。
三种核心判断条件:
-
情况1:
若
f(n)的增长速度多项式\(\color{red}{小于}\)n^(log_b a)- 条件:
f(n) = O(n^(log_b a - ε))(其中ε > 0) - 结论:时间复杂度由子问题代价主导,即 $\color{red}{T(n) = Θ(n^{log_b a})} $
- 说明:
此时f(n)的量级足够小,不影响最终复杂度
- 条件:
-
情况2:
若
f(n)与n^(log_b a)的增长速度"多项式相当" (人话 :\(\color{red}{约等于}\))- 条件:
f(n) = Θ(n^(log_b a) · log^k n)(其中k ≥ 0) \(k 是 f(n) 里的对数项是 \log n 的几次方\) - 结论:时间复杂度由两者共同主导,即 \(\color{red}{T(n) = Θ(n^{log_b a} · log^{k+1} n) }\)
- 说明:
此时 f(n) 的量级与子问题代价相当,需要叠加对数因子
- 条件:
-
情况3:
若
f(n)的增长速度多项式 \(\color{red}{大于}\)n^(log_b a)- 条件:
f(n) = Ω(n^(log_b a + ε))(其中ε > 0),且满足正则条件 - 结论:时间复杂度由
f(n)主导,即 \(\color{red}{T(n) = Θ(f(n))}\)` - 说明:
此时 f(n) 的量级足够大,直接决定最终复杂度
- 条件:
实例说明
以归并排序的递归式 T(n) = 2T(n/2) + O(n) 为例:
- 参数解析:
a=2,b=2,因此log_b a = log_2 2 = 1,子问题代价的量级为n^1 = n f(n) = O(n),与n^1量级相当(符合情况2,k=0)- 最终复杂度:
Θ(n log n),f(n)的量级直接决定了适用情况2
ps:here 这个不错 后面有题目

浙公网安备 33010602011771号