对于形为T(n) = aT(n / b) + f(n)的递推方程,我们有如下结论:
主定理(MasterTheorem) 设a≥1,b>1 为常数,f(n)为函数,n为非负整数,且 T(n) = aT(n / b) + f(n),则有以下结果:
- 若存在ε>0,使得f(n) = O(nlogba-ε),则T(n) = Θ(nlogba)
- 若f(n) = Θ(nlogba),则T(n) = Θ(nlogbalogn)
- 若存在ε>0,使得f(n) = Ω(nlogba+ε),并且对于某个常数c<1和所有充分大的n,有af(n / b)≤cf(n),则T(n) = Θ(f(n))
证明:详见教材(推导过程略复杂,不想写了qwq)。
由主定理可以直接得到下述推论:
推论1 依主定理条件,递推方程为T(n)= aT(n / b) + c,则
- 当a≠1时,T(n) = Θ(nlogba)
- 当a=1时,T(n) = Θ(logn)
推论2 依主定理条件,递推方程为T(n) = aT(n / b) + cn,则
- 当a>b时,T(n) = Θ(nlogba)
- 当a=b时,T(n) = Θ(nlogn)
- 当a<b时,T(n) = Θ(n)
例 根据主定理及其推论,我们可以直接得到二分检索算法的平均时间复杂度为Θ(logn),而二分归并排序的平均时间复杂度为Θ(nlogn)。