剪开黑夜

In the twilight of every early morning

导航

算法分析基础——主定理

Posted on 2019-01-23 11:28  剪开黑夜  阅读(2350)  评论(0编辑  收藏  举报

对于形为T(n) = aT(n / b) + f(n)的递推方程,我们有如下结论:

主定理(MasterTheorem) 设a≥1,b>1 为常数,f(n)为函数,n为非负整数,且 T(n) = aT(n / b) + f(n),则有以下结果:

  1. 若存在ε>0,使得f(n) = O(nlogba-ε),则T(n) = Θ(nlogba)
  2. 若f(n) = Θ(nlogba),则T(n) = Θ(nlogbalogn)
  3. 若存在ε>0,使得f(n) = Ω(nlogba+ε),并且对于某个常数c<1和所有充分大的n,有af(n / b)≤cf(n),则T(n) = Θ(f(n))

证明:详见教材(推导过程略复杂,不想写了qwq)。

由主定理可以直接得到下述推论:

推论1 依主定理条件,递推方程为T(n)= aT(n / b) + c,则

  1. 当a≠1时,T(n) = Θ(nlogba)
  2. 当a=1时,T(n) = Θ(logn)

推论2 依主定理条件,递推方程为T(n) = aT(n / b) + cn,则

  1. 当a>b时,T(n) = Θ(nlogba)
  2. 当a=b时,T(n) = Θ(nlogn)
  3. 当a<b时,T(n) = Θ(n)

 例 根据主定理及其推论,我们可以直接得到二分检索算法的平均时间复杂度为Θ(logn),而二分归并排序的平均时间复杂度为Θ(nlogn)。