主定理知识
主定理是用于解决形如 T(n)=aT(n/b)+f(n)的递归方程的一种方法,其中 a≥1 和 b>1 是常数,f(n)是渐近函数。主定理可以帮助我们快速确定递归算法的时间复杂度。
1.1主定理公式
对于递归关系式 T(n)=aT(nb)+f(n)T(n)=aT(bn)+f(n),其中 a≥1a≥1 和 b>1b>1 是常数,f(n)f(n) 是一个渐近正函数,主定理分为三种情况:
计算步骤如下所示:
示例1: T(n)=9T(n3)+nT(n)=9T(3n)+n
参数:
a=9a=9
b=3b=3
f(n)=nf(n)=n
- 计算n^logb^a :nlog3^9=n^2
- 比较f(n)和n^logb^a
f(n)=n=O(n^(2−ϵ),取 ϵ=1。))
(3)应用主定理的第一种情况:
T(n)=Θ(n^2)
示例2: T(n)=T(2n/3)+1
参数:
a=1a=1
b=3/2
f(n)=1
(1)计算 n^log b^a:
n^log3/2^1=n^0=1
(2)比较 f(n) 和 nlogb^a:得
f(n)=1=Θ(1)
(3)应用主定理的第二种情况:
T(n)=Θ(logn)
示例3: T(n)=3T(n/4)+nlogn
参数:
a=3a=3
b=4b=4
f(n)=nlogn
(1)计算 nlogb^a:
nlog43≈n0.793
(2)比较 f(n) 和 nlogb^a:
f(n)=nlogn=Ω(n0.793+ϵ),取ϵ=0.2ϵ=0.2。
验证正则条件
af(n/b)≤cf(n),即 3(n/4logn/4)≤cnlogn,显然只要 c≥3/4即可。
(3)应用主定理的第三种情况:
T(n)=Θ(nlogn)
注意事项:
如果 f(n)不符合上述三种情况中的任何一种,例如f(n)=nlogn 而 a=b=2a=b=2,那么主定理不适用,需要使用其他方法求解递归方程。