【初赛】主定理 总结

主定理

(ai教的)

在主定理中,f(n) 不仅参与计算,而且是核心判断依据

它代表分治算法中"非递归部分的时间代价"(即分解问题与合并子问题结果的总时间),主定理的本质就是通过对比 f(n) 与"子问题总求解代价的渐近量级"(即 n^(log_b a)),来确定整个算法的时间复杂度。

三种核心判断条件

  1. 情况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. 情况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. 情况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=2b=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 这个不错 后面有题目

posted @ 2025-09-01 13:52  Slayer-WT!!!!!!!!  阅读(103)  评论(0)    收藏  举报