對於形為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)。