主定理(Master Theorem)

主定理(Master Theorem)


形式

主定理用于求解以下递归式算法的时间复杂度:

\[T(n) = aT(\frac{n}{b}) + f(n) \\ \]

其中:

  • \(n\) 是问题规模大小;
  • \(a\) 是子问题个数;
  • \(\frac{n}b\) 是子问题大小;
  • \(f(n)\) 是是将原问题分解成子问题和将子问题的解合并成原问题的解的时间。

那么会有三种情况:

\[T(n) = \begin{cases} \Theta(n^{\log_b{a}}) , f(n) = O(n^{\log_b{a-\varepsilon}}),\varepsilon >0 \\ \Theta(n^{\log_b{a}}\log^{k+1}{n}) , f(n) = \Theta(n^{\log_b{a}}\log^k{n}) , k \ge 0 \\ \Theta(f(n)) , f(n) = \Omega(n^{\log_b{a+\varepsilon}}),\varepsilon >0 \\ \end{cases} \]

记忆、判断方法

  1. 先排除 \(f(n) = O(n^{\log_b{a}}\log^k{n})\) 的情况:(注意这里 \(k \ge 0\)\(k\) 可以为 \(0\)

    直接得到 \(T(n) = \Theta(n^{\log_b{a}}\log^{k+1}{n})\)

  2. 再设 \(f(n) = n^d\)

    那么简单的分为两种情况:

    • \(d < \log_b{a}\)\(T(n) = \Theta(n^{\log_b{a}})\)
    • \(d > \log_b{a}\)\(T(n) = \Theta(f(n))\)

    也就是 \(\max(n^{\log_{b}{a}},f(n))\)


参考资料

主定理(Master Theorem) - 知乎 (zhihu.com)

posted @ 2024-09-21 10:19  Add_Catalyst  阅读(122)  评论(0)    收藏  举报