对于形为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)。

相关文章:

  • 2022-02-11
  • 2021-10-23
  • 2021-12-05
  • 2021-08-08
  • 2022-02-24
  • 2021-12-11
  • 2021-11-05
  • 2021-07-25
猜你喜欢
  • 2021-09-03
  • 2021-04-03
  • 2022-12-23
  • 2022-01-15
  • 2022-12-23
  • 2021-11-11
  • 2021-12-20
相关资源
相似解决方案