收藏 分享(赏)

算法分析(2).ppt

上传人:dcs1276 文档编号:9659518 上传时间:2019-08-21 格式:PPT 页数:48 大小:825KB
下载 相关 举报
算法分析(2).ppt_第1页
第1页 / 共48页
算法分析(2).ppt_第2页
第2页 / 共48页
算法分析(2).ppt_第3页
第3页 / 共48页
算法分析(2).ppt_第4页
第4页 / 共48页
算法分析(2).ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、,Analysis of Algorithms(2),Pseudocode (伪代码) Solving Recurrences(解递归),While-循环最坏情形(j). While-循环平均情形(j/2),当插入位置有相同概率时.,Pseudocode-Insertion Sort,“”表示”赋值“(assignment). 忽略数据类型、变量的说明等与算法无关的部分. 允许使用自然语言表示的一些 “macros”. 伪代码突出了程序使用的算法.,Example of insertion sort,插入排序(Insertion sort)分析,最优二叉树(optimized binary t

2、ree),for m 2 to n (1) do for i 0 to n-m (1) doj i + m (1)w(i, j) w(i, j-1) + P(i) + Q(j) (1)c(i, j)minilj c(i, l-1) + c (l, j) + w(i, j) W(n,n),P(n),Q(n),c(n,n) 是算法使用的数组,假定已初始化.,Optimized binary tree,minilj c(i, l-1) + c (l, j) : (j-i)=(m) Inner for-loop:(m(n-m); Total :(2mnm(n-m)=(n3),解递归,Solving R

3、ecurrences-(1)Recursion tree(2)Substitution method,Merge-Sort,Merging two sorted arrays,Merge-Sort Analysis,Should be 假定n=2h ,h0,上式变为2T(n/2),Recurrence for merge sort,隐含假定n=2h. 以cn代替(n),不影响渐近分析的结果. “If n=1”,更一般的是“if nn0, T(n)=(1)”:指:可找到足够大常数c1,使得T(n)c1 if nn0.,Recursion tree,解T(n) = 2T(n/2) + cn, 其中

4、 c 0 为常数. 递归展开到T(n0),会导致推导的麻烦.所以展开到T(1).然后再从前n0个T(n)的值确定渐近分析的常数.,Recursion tree,Solve T(n) = 2T(n/2) + cn, where c 0 is constant.,Recursion tree,Solve T(n) = 2T(n/2) + cn, where c 0 is constant.,Recursion tree,递归树等价于迭代展开,T(n)=4T(n/2)+n=4(4T(n/22)+n/2)+n=42T(n/22)+n+2n=43T(n/23)+n+2n+22n =4hT(n/2h)+n

5、(1+2+2h-1) =n2T(1)+n(2h-1)=(n2) 很多递归式用递归树解不出来,但递归树能提供直觉,帮助我们用归纳法求解(Guess 归纳假设).,Conclusions,(n lg n)比(n2)增长的慢. 所以,merge sort 渐近(asymptotically)优于插入排序. 实际上, merge sort 优于 insertion sort 仅当 n 30 or so. 1000*nlogn算法当n比较小时未必比n2算法要快. n足够大时前者才能看出优势.,当n2h,2hnn=(2h), h=(logn) T(2h) T(n) T(2h+1). 所以,(h2h)T(n

6、)(h+1)2h+1) (h+1)2h+1)=(h2h+1+2h+1)=(h2h+1)=(h2h) 所以T(n)=(h2h)=(nlogn),较一般的递归式,较一般的递归:T(n)=aT(n/b)+cn, a,b是大于1的整数,递归树方法仍可使用. 首先考虑n=bh情形:T(n)=ahT(1)+cn(1+(a/b)+(a/b)h-1)= ahT(1)+cbh(1+(a/b)+(a/b)h-1) 当bhn h=(logn),Substitution methods,The most general method: 1. Guess the form of the solution. 2. Ver

7、ify by induction. 3. Solve for constants.,Example1,T (n) = 4T (n/2) + n (n=2h) Assume that T (1)=(1). Guess O(n3) :归纳假定为T (n)cn3. c是待定常数. 应用假定有:T (k) ck3 for k n . 归纳证明: T (n) cn3 并确定常数c.,Example(continued),T(n)=4T(n/2)+n4c(n/2)3+n=(c/2)n3+n=cn3-(c/2)n3-n) cn3 取 c2 and n1,不等式(c/2)n3n0成立,Example(cont

8、inued),还要检验初始条件是否满足归纳假设. 初始条件为: T(n)=(1),当 nn0 ,n0为常数. 因为有常数(n0-1)个T的值:T(1),T(n0-1) 所以可取c足够大,使得T(n)cn3, 对nn0 成立. This bound is not tight!,Example(continued),We shall prove that T(n)=O(n2). Assume that T(k)ck2 for kn: T(n)=4T(n/2)+n4c(n/2)2+n=cn2+n 归纳不能往下进行!,Continued,IDEA: Strengthen the inductive h

9、ypothesis. Subtract a low-order term. Inductive hypothesis: T(k)c1k2 c2k for k1,Continued,For 1nn0, we have “(1)”c1n2-c2n, if we pick c1 big enough.,The Master Method,The master method用来解下述递归T(n)=aT(n/b)+f(n) ,式中a1, b1, 为整数, f(n)0. 按f(n)相对于nloga 的渐近性质, 分三种情形进行分析. 这里loga 指以b为底的a的对数logba.,The Master M

10、ethod:情形1,情形1.f(n)=O(nloga), 0,为某一常数f(n)的增长渐近地慢于nloga (慢 n 倍). Solution: T(n)=(nloga) .,The Master Method:情形2,情形2:f(n)=(nloga lgkn) k0 为某一常数. f(n) 和 nloga 几乎有相同的渐近增长率. Solution: T(n)=(nloga lgk+1n) .,The Master Method:情形3,情形3 f(n)=(nloga +) 0为一常数.f(n)多项式地快于nloga (by an n factor), f(n) 满足以下规则性条件:af(n

11、/b)cf(n), 0c1 为常数. Solution: T(n) =(f(n) .,Examples 1,T(n)=4T(n/2)+n a=4, b=2nloga=n2; f(n)=n. 情形1: f(n)=O(n2) for =1. T(n) =(n2).,Examples 2,T(n)=4T(n/2)+n2a=4, b=2nloga=n2; f (n)=n2. 情形 2: f(n)=(n2lg0n), k = 0. T(n)=(n2lgn).,Examples 3,T(n)=4T(n/2)+n3 a=4, b=2 nloga=n2; f(n)=n3. CASE 3: f (n) = (n

12、2+) for =1 and 4(n/2)3cn3 (reg. cond.) for c=1/2. T(n)=(n3).,Idea of the Master method,Idea of the Master method,从递归树可知:T(n)= ahT(1)+akf(n/bk)=ahT(1)+akf(bh-k)=nlogaT(1)+akf(bh-k) T(n)的渐近性质由nloga和akf(bh-k)的渐近性质决定:两者中阶较高的决定! 为什么要比较f(n)和nloga 的原因!,Master 方法分析,n=bh, h=logbn,nloga=ah loga 指 logba. T(n)=

13、 ahT(1)+kakf(n/bk)=ahT(1)+kakf(bh-k)k求和范围:k=0,h-1 kakf(bh-k)= kah-kf(bk), (后者求和从1到h),Proof (Case 1),n=bh, nloga=ah,n=bh.因f(n)=O(nloga),所以f(n)cnloga-=cah/bh =f(bh)c(ah/bh) 取充分大的c,使f(bi)c(ai/bi) 对所有i成立. T(n)=ahT(1)+akf(bh-k),(: k=0,h-1) T(n)ahT(1)+cak(ah-k/b(h-k)=ahT(1)+cah(1/b(h-k) ahT(1)+cah1k1,0,无穷

14、和收敛) 所以T(n)=O(nloga); 显然, T(n)=(nloga),Proof of Case2,f(n)=(nloga lgkn), n=bh, nloga=ah =f(bh)cah(hlgb)k=cahhk(lgb)k 类似,f(bi) caiik(lgb)k. (取充分大的c) T(n)ahT(1)+cahi i k (lgb)kahT(1)+cah hk+1 (lgb)k =ahT(1)+cah hk+1 (lgb)k+1 /lgb=c(nlogalgk+1n) 上面推导中用到:1k+hk=(hk+1),Case 3,反复应用规则性条件有:akf(n/bk)ckf(n) 所以

15、: akf(n/bk) ckf(n) T(n)=ahT(1)+akf(n/bk)ahT(1)+f(n)ckahT(1)+f(n)(1-c)-1 因为, f(n)=(nloga +),量级高于ah , 所以T(n)=O(f(n). 又,T(n)f(n).所以,T(n)=(f(n),Summary,Recursion:T(bh)=aT(bh-1)+f(bh) H为非负整数,但a,b为正数(可不是整数).Transform into,Master (主项)法,Case 1Case 2,Master (主项)法,Case 3自n0起满足规则条件,则结论亦真.,练习33,(e)case 3:a=9,b=

16、2,任取c,f(n)=n22n (f)case 3 (g)case 1 (h)case3,logba=7,f(n)=n8=(n7),8(n/2)8cn8 (i)case 3 (j)case 1,裴波那契(Fibonacci)序列,序列F0=F1=1,Fi=Fi-1+Fi-2 (i1)称为Fibonacci序列. 以下算法计算第n个Fibonacci数:proc F(n)if n1 return(1)else return( F(n-1)+F(n-2);end proc 令t(n)为算法执行的加法次数,有:t(n)=0 for n=0,1t(n)=t(n-1)+t(n-2)+1特别t(2)=1,

17、t(3)=2,续,因为t(n-1)t(n-2),有t(n)2. 用归纳法易证:t(n)2n 又有t(n)2t(n-2)2k-1t(2)=2k-1 n=2k2k-1t(3)=2k n=2k+1 t(n)= 算法有指数的时间复杂度. 实际上这是因递归引起的大量的重复计算而非问题本身的难度所致.可设计一非常简单的线性时间复杂度的迭代算法.,Homework(2),1.用归纳法证明2.应用master方法求解T(n)=2T(n/2)+(n1/2) 3.展开递归树:T(n)=T(0)+T(n1)+cn,并做渐近分析 展开T(n)=T(0.1n)+T(0.9n)+(n)的递归树并计算递归树的深度和T(n)的渐近值. 14章练习33-(a),(b),(c),(d),

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报