主定理速记

主定理速记

主定理用于分析分治复杂度。

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

\(T(n)\) 表示时间复杂度

\(n\) 表示问题规模

\(a\) 表示划分后子问题个数

\(\frac{n}{b}\) 表示子问题规模,上下取整不影响复杂度分析

\(f(n)\) 表示分治过程中“分”和“合并”这两步的时间开销

\(f(n)\) 的举例:

比如归并排序,合并需要扫整个数组,所以 \(f(n)=O(n)\)

而二分,合并仅需要对两个元素比较,所以 \(f(n) = O(1)\)


基于上式,引入 基准函数 \(\Theta(n^{log_{b}a})\) 。比较和 \(f(n)\) 的大小。有下面三种情况。

  1. 若存在实数 \(\varepsilon >0\) ,使得 \(f(n) = O(n^{log_{b}a - \varepsilon})\)。则 \(T(n) =O(n^{log_{b}a})\)

  2. \(f(n) = O(n^{log_{b}a})\) ,则 \(T(n) = O(log_{b}{a}~ log{n})\)

  3. 若存在实数 \(\varepsilon >0\) ,使得 \(f(n) = O(n^{log_{b}a + \varepsilon})\),且 \(af(\frac{n}{b}) \le cf(n),c<1\) 。则 \(T(n) = O(f(n))\)

这三种情况实际上就是和基准函数在渐进意义上的比大小。

case3需要额外判断 \(af(\frac{n}{b}) \le cf(n),c< 1\)

具体算例和详细表述参考(112条消息) 主定理_Debroon的博客-CSDN博客_主定理

posted @ 2022-09-21 10:11  Mxrurush  阅读(35)  评论(0编辑  收藏  举报