算法设计与分析第2讲 渐进性
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
例子:n2+2n+10= Θ(n2)
n2<=n2+2n+10<=2n2
6
另外两个符号
o符号
f(n)= o(g(n)) f(n)<g(n), (O是<=) 例 lgn= ω(n1/2)
ω符号
f(n)= ω(g(n)) f(n)>g(n), (Ω是>=) 例 n1/2 = ω( lgn )
10
2.2
递归函数的渐进分析
T(n)=4 T(n/2) + n, T(1)=θ(1) 猜测T(n)=O(n2) 归纳验证: 1 T(1)是满足的; 2假设对小于n的规模,T(k)<=C1k2-C2k 3 T(n)= 4 T(n/2) + n <=C1n2-2C2n+n = C1n2-C2n-(C2-1)n 因此当C2>1时,归纳成立。同时还需满足 T(1)= θ(1)< C1-C2
12
2.2
递归函数的渐进分析
2)递归树方法 T(n)=T(n/2) + T(n/4) +n2, T(1)=θ(1)
n2 n2 T(n)= T(n/2) T(n/4) n2/4 n2/16 T(n/8)T(n/16) n2 n2/4 n2/16 n2/16
2 n2/64 n2/64 n /256
11
2.2
递归函数的渐进分析
T(n)=4 T(n/2) + n, T(1)=θ(1) 猜测T(n)=O(n2) 归纳验证: 1 T(1)是满足的; 2 假设对小于n的规模,T(k)<=Ck2 3 T(n)= 4 T(n/2) + n <=Cn2+n 无法得到 T(n)<=Cn2
9
2.2
递归函数的渐进分析
T(n)=4 T(n/2) + n, T(1)=θ(1) 先放大点,猜测T(n)=O(n3) 归纳验证: 1 T(1)是满足的; 2 假设对小于n的规模,T(k)<=Ck3 3 T(n)= 4 T(n/2) + n <=4 Cn3/8+n =Cn3-(Cn3/2-n) 因此,只要开始满足C>2,归纳是成立的。 另外,T(1)= θ(1)<C, 故C>max(2, θ(1))
lgba=n2, n
属于case 1, T(n)= θ(n2)
2) T(n)=4T(n/2) + n2
属于case 2, T(n)=θ(n2 lgn)
3) T(n)=4T(n/2) + n3
属于case3 T(n)=θ(n3)
15
主方法的证明思路
递归树
f(n/b) f(n/b2) f(n/b2) f(n) f(n/b)… f(n/b) H=logbn f(n/b2)
算法设计与分析
2. 渐进性分析数学基础
徐义春 Hi.baidu.com/chinaxuyichun
目录
渐进符号及其意义 递归函数的渐进性分析
2
2.1 函数渐进符号与意义
O符号
f(n)=O(g(n)) 存在常数c及n0, 当n>n0时,满足0<=f(n)<=cg(n)
g(n)是f(n)的一个渐进上界 例 2n2 =O(n3)
T(n/4) T(n/8)
T(1)
T(1)
T(n)<=(n2+5/16n2+25/256n2+…)+ θ(n)= O(n2)
13
2.2
递归函数的渐进分析
3)主方法 T(n)=a T(n/b) + f(n),其中a,b>1,f(n)>0 lgba 比较f(n)与n lgba-ε)对某个ε>0 Case 1: f(n)=O(n
θ(1)
θ(1) θ(1)共有aH=nlogba个 T(n)=f(n)+af(n/b)+a2f(n/b2)+…+aHθ(1)
f(n)~nlogba, akf(n/bk)~ak(n/bk) logba= nlogba Case1:f(n)=O(nlogba-), T(n)=O(Hnlogba-)+nlogba θ(1) Case3:af(n/b)<(1- ε)f(n),akf(n/bk)=(1- ε)kf(n), T(n)=θ(f(n)) Case2:f(n)=θ (nlogbalgkn), T(n)=nlogba (1+logkn+logkn/b+logkn/b2+…)+nlogbaθ(1)=θ(nlogbalogkn)
7
常用的阶
多项式 n, n2,…nk 对数 lg n 指数 an
Lg(n) < nk < an
8
2.2
递归函数的渐进分析
1) 代换法 分为3步: 1 猜渐进形式 g(x) 2 进行归纳验证 3 得到c T(n)=4 T(n/2) + n, T(1)=θ(1) 规模2倍时,时间是4倍?猜测T(n)=θ(n2)
• T(n)=θ(nlgb )
a
Case 2:
lgba lgkn)对某个k>=0 f(n)=O(n
a
• T(n)=θ(nlgb lgk+1n)
Case 3: f(n)=
lgba+ε)& Ω(n
af(n/b)<=(1-ε’)f(n)
14
• T(n)=θ(f(n))
2.2
递归函数的渐进分析
主方法的例子 1) T(n)=4T(n/2) + n,
16
百度文库
4
下界符号
Ω符号
f(n)= Ω (g(n)) 存在常数c及n0, 当n>n0时,满足f(n)>=cg(n)>=0
g(n)是f(n)的一个渐进下界 例 n1/2 =Ω( lgn )
5
同阶符号
Θ符号
f(n)= Θ (g(n)) 当 f(n)= O (g(n))
并且 f(n)= Ω(g(n))时
O(g(n))代表以g(n)为上界的函数集合,f(n)是其 中之一,因此“=”此处是“∈”,
• 错误的表示---O(g(n)) = f(n)
3
渐进符号的运算
f(n) = n3+O(n2) : 存在一个h(n), h(n) =O(n2), 满足f(x)= n3+h(n) n2+O(n)=O(n2) : 对任意的f(n)=O(n), n2+f(n) = O(n2) 因为 n2+f(n) < n2+c1.n < c2.n2