1.主定理:设a>=1和b>1为常数,设f(n)为一函数,T(n)由递归式
对非负整数定义,其中n/b指下取整或上取整.那么T(n)可能有如下的渐进界:
(1)若对于某常数 ε>0,有,则;
(2)若.则;
(3)若对于某常数 ε>0,有,且某常数 c<1与所有足够大的n,有,则
2.主定理的使用方法.
由主定理的三种情况可以看出,每一种情况都要比较 f(n) 与进行比较.(求复杂度时,通常取上界)
第一种情况,f(n)与进行比较,较大,则解为
第二种情况,两种函数同样大,这是乘以对数因子lgn,即
第三种情况,f(n)较大,则递归式的解为
3.例题示范
例题(1).,求这个递归式的复杂度.
第一步.计算,可求得=n^2,
第二步.与f(n)=n进行比较,因此符合第一种情况,解得
例题(2)
第一步.计算,可求得a=1, b=3/2,因此=
第二步.与f(n)=1进行比较,符合第二种情况,解得
例题(3)第三中情况和第一种类似,不再举例
例题(4)
第一步.计算,a=2, b=2, = n.看上去符合第三种情况,因为f(n)=lgn渐进大于n,但是不是多项式大于.
对于任意正常数ε,比值f(n)与等于nlgn/n = lgn.渐进小于n^ε,(可用求极限方法分子分母同时求导求得).这种情况落在情况二和情况三之间.
这种情况下的递归式求解要用到:(算法导论4.4-2)
定理:若,其中k>=0,则主定理中递归式的解为