- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法分析(2)Pseudocode (伪代码)Solving Recurrences(解递归)While-循环最坏情形Θ(j).While-循环平均情形Θ(j/2),当插入位置有相同概率时.伪代码-插入排序“←”表示”赋值“(assignment).忽略数据类型、变量的说明等与算法无关的部分.允许使用自然语言表示一些相关步骤伪代码突出了程序使用的算法. 插入排序实例插入排序分析最坏情形:输入数据已按倒序排列平均情形:输入数据为所有可能的排列插入排序是否是最快的排序算法?当n很小时,结论肯定当n很大时,不一定最优二叉树(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) 是算法使用的数组,假定已初始化.最优二叉树:时间复杂度分析minil?j { c(i, l-1) + c (l, j) }: Θ(j-i)=Θ(m)内层循环:Θ(m(n-m));总的时间复杂度: Θ(∑2≤m≤nm(n-m))=Θ(n3)解递归方程的方法 递归树(Recursion tree) 替代法(Substitution method) Master方法(Master method)归并排序合并已排序的子序列归并排序时间复杂度分析Should be 假定n=2h ,h≥0,上式变为2T(n/2)归并排序时间复杂度:递归方程隐含假定n=2h.以cn代替Θ(n),不影响渐近分析的结果.“If n=1”,更一般的是“if nn0, T(n)=Θ(1)”:指:可找到足够大常数c1,使得 T(n)c1 if nn0.递归树解T(n) = 2T(n/2) + cn, 其中 c 0 为常数.递归展开到T(n0),然后再从前n0个T(n)的值确定渐近分析的常数.展开到T(n0),有时会导致推导的麻烦,所以展开到T(1).递归树解T(n) = 2T(n/2) + cn, 其中 c 0 是常数.递归树解 T(n) = 2T(n/2) + cn, 其中 c 0 是常数递归树递归树等价于迭代展开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(1+2+┅+2h-1) =n2T(1)+n(2h-1) =Θ(n2) 很多递归式用递归树解不出来,但递归树能提供直觉,帮助我们用归纳法求解(Guess 归纳假设).结论Θ(n lg n)比Θ(n2)增长的慢.merge sort 渐近(asymptotically)优于插入排序.实际上, merge sort 优于 insertion sort 仅当 n 30 or so.1000*nlogn算法当n比较小时未必比n2算法要快. n足够大时前者才能看出优势.当n≠2h2h≤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)+┅+(a/b)h-1) = ahT(1)+cbh(1+(a/b)+┅+(a/b)h-1) 当bh≤nbh+1 , 仍有: h=Θ(logbn)换底公式: logbn=log2n/log2b = h=Θ(logn)替代法解递归方程最一般的方法:1. Guess the form of the solution.2. Verify by induction.3. Solve for constants.例1T (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.例(续)T(n)=4T(n/2)+n ≤4c(n/2)3+n =(c/2)n3+n =cn3-((c/2)n3-n) ≤cn3 取 c≥2 and n≥1,不等式(c/2)n3–n
文档评论(0)