主方法(master method)给出求解以下形式递归式的“食谱”方法
主定理:T[n] = aT[n/b] + f(n)
其中a>=1 and b>1是常量,并且f(n)是一个渐进正函数
考虑以下三种情况:
1. 如果f(n)=O(n^(logb(a) – E))对于某个常量E>0成立,那么T[n]=O(n^(logb(a)))
2. 如果f(n)=O(n^(logb(a))),则T[n]=O(n^(logb(a)) ^ logn)
3. 如果f(n)=O(n^(logb(a) + E))对于某个常量E>0成立,且对常数c<1有足够大的n,有af(n/b)<=cf(n),那么T[n]=O(f[n])
以快速排序为例,
在其最佳情况时,每次划分都是平分,划分的时间代价为O(n),故算法运算时间可递归地表示为
T(n) = 2T(n / 2) + O(n)
a = 2, b = 2, f(n) = O(n)
符合主方法的第二种情况,因此时间复杂度为O(nlogn)
对Master Method的证明请见算法导论。