AnalysisofAlgorithms2課件.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
AnalysisofAlgorithms2課件

Analysis of Algorithms(2) Pseudocode (伪代码) Solving Recurrences(解递归) While-循环最坏情形Θ(j). While-循环平均情形Θ(j/2),当插入位置有相同概率时. Pseudocode-Insertion Sort “←”表示”赋值“(assignment). 忽略数据类型、变量的说明等与算法无关的部分. 伪代码突出了程序使用的算法. Example of insertion sort 插入排序(Insertion sort)分析 最优二叉树(optimized binary tree) for m ←2 to n Θ(1) do {for i ←0 to n-m Θ(1) do{ j ← i + m Θ(1) w(i, j) ←w(i, j-1) + P(i) + Q(j) Θ(1) c(i, j)←minil?j { c(i, l-1) + c (l, j) } + w(i, j) } } W(n,n),P(n),Q(n),c(n,n) 是算法使用的数组,假定已初始化. Optimized binary tree minil?j { c(i, l-1) + c (l, j) }: Θ(j-i)=Θ(m) Inner for-loop:Θ(m(n-m)); Total :Θ(∑2≤m≤nm(n-m))=Θ(n3) 解递归 Solving Recurrences- (1)Recursion tree (2)Substitution method Merge-Sort Merging two sorted arrays Merge-Sort Analysis 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, 其中 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)=2t(n/2)+cn=2[2t(n/22)+c(n/2)]+cn=22t(n/22)+2cn=……=2mt(n/2m)+mcn=nd+cnlog2n 令n=2m所以t(n)=Θ(nlog2n) 很多递归式用递归树解不出来,但递归树能提供直觉,帮助我们用归纳法求解(Guess 归纳假设). Conclusions Θ(n lg n)比Θ(n2)增长的慢. 所以,merge sort 渐近(asymptotically)优于插入排序. 实际上, merge sort 优于 insertion sort 仅当 n 30 or so. 1000*nlogn算法当n比较小时未必比n2算法要快. n足够大时前者才能看出优势. 当n≠2h 2h≤n2h+1= n=Θ(2h), h=Θ(logn) T(2h)≤ T(n) ≤ T(2h+1). 所以,Θ(h2h)≤T(n)≤Θ((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)+┅

文档评论(0)

1234554321 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档