主方法(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的证明请见算法导论。

posted on 2012-09-20 01:07  melon.h  阅读(2315)  评论(0编辑  收藏  举报