- 1、本文档共59页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
清华大学算法课13
算法与数据结构Algorithms and Data Structures 第十三章 算法分析与设计技术Algorithm Analysis and Design Techniques 13.1 递归算法的分析 13.2 递归式求解 13.3 大递归式的一般解 13.4 分而治之法 13.5 动态规划法 13.6 贪心法 13.7 有哪些信誉好的足球投注网站算法 13.1 递归算法的分析 考虑一个归并排序算法: List mergesort(List L,int n) { if (n==1) return L; break L into 2 halves, L1 and L2, each of length n/2; return merge(mergesort(l1,n/2), mergesort(l2,n/2)); } // 设 T(n)是最坏情况下的时间复杂度。 显然: T(n)=1 if n=1; T(n)=2T(n/2)+cn if n1 我们前面已做过很多递归算法的分析,给出了相应的递归式; 例如: Hanoi塔: T(0)=0 T(n)=2T(n-1)+1 折半查找: T(0)=0; T(1)=1; T(n)=T(n/2)+1; 最复杂的是快速排序。 13.2 递归式求解 有三种方法: (1). 猜一个解f(n),代入递归式,对n归纳证明T(n)=f(n),同时确定F(n)中的不定系数,使对所有的n有T(n)=f(n)。 (2). 展开递归式,直到式子的右边的T(m)均为初试递归式(如T(0), T(1)). (3). 一般求法。 1 猜解: T(n)=1 if n=1; T(n)=2T(n/2)+cn if n1 设T(n)=a.n.logn+b 归纳基础:当 n=1时 b=1 设对所有的kn 有 a.k.logk+b=T(k) 当k=n时: T(n)=2T(n/2)+cn 2. 展开递归式 13.3 大递归式的一般解 考虑递归算法: T(1)=1 把大小为n的问题,分解为a个大小为n/b的子问题, 划分问题和合并子问题的解所做工作量是d(n). 则: T(1)=1 T(n)=aT(n/b)+d(n) d(n)成为驱动函数 对上一个递归式, a=b=2, d(n)=cn 展开递归式: 考虑3种情况下的特解: 若: ad(b) 2. 若: ad(b), 3 若: a=d(b), 例1: T(1)=1 T(n)=4T(n/2)+n T(n)=4T(n/2)+n2 T(n)=4T(n/4)+n3 由于三个式中:a=4, b=2 ,它们的通解都是n2; d(n)=n, 所以d(b)=2, 因a=4d(b) (2) d(n)= n2, 所以d(b)=4, 因a=4=d(b) (3) T(n)=4T(n/4)+n3 d(n)= n3, 所以d(b)=8, 因a=4d(b) 特解是: O(d(n))= n3 以上讨论的是d(n)是n的积的形式,下面考虑非积形式。 例2: T(1)=1 T(n)=3T(n/2)+2n1.5 2n1.5不是n的积的形式,但n1.5是,令U(n)=T(n)/2 U(1)=1/2 U(n)=3U(n/2)+n1.5 如果U(1)=1, 则通解是:nlog3= n1.59 因U(1)=1/2,所以通解是: n1.59 /2 a=3, b=2, d(n)= n1.5 ,d(b)= 21.5=2.82 , ad(b) 所以特解是: n1.59 所以 T(n)=O(n1.59) 例3: T(1)=1 T(n)=2T(n/2)+nlogn 显然通解是 n。 a=b=2, d(n)=nlogn 不是n的积。 特解: 13.4 分而治之法 分而治之就是将大的问题分解小的子问题分别解决,最常用的办法是递归算法。在前面我们已设计了许多递归算法,诸如:Hanoi塔,快速排序,归并排序,二叉树遍历,dfs,等等。 下面在看几个例子,它们比较特殊 例4:两个n位正整数相乘,这两个数很大,大到计算机内部无法表示。 为简化问题,设n是2的幂。 XY=AC10n+(AD+BC)10n/2+BD 算法分析:位乘次数 T(1)=1 T(n)=4T(n/2)+cn T(n)=O(n2) 改进: XY=AC10n+[
您可能关注的文档
- 混凝土土方英译汉.doc
- 混凝土大坝外文翻译.doc
- 混凝土桥梁计算书模板.doc
- 混合共轭聚合物纳米粒子介导的荧光能量转移.ppt
- 深圳牛津八年级下第六单元Pets.ppt
- 混凝土结构设计原理 第五章 受弯构件斜截面 承载力的计算.ppt
- 深锤电潜泵基础知识(英文).ppt
- 深圳英语八B Unit 5 Period 2.ppt
- 混合物的分离与提纯(一)教学课件.ppt
- 混合运算pt模板.ppt
- XX T 1149.11-2010 内燃机 活塞环 第11部分:楔形铸铁环正式版.doc
- XX T 1149.13-2008 内燃机 活塞环 第13部分:油环正式版.doc
- XX T 1149.12-2013 活塞环楔形钢环正式版.doc
- 人教版高中生物必修2全册教学课件.pptx
- 2025年春新北师大版8年级物理下册全册课件.pptx
- 2024年新人教版8年级上册物理全册课件.pptx
- (新统编版)语文三年级下册 第一单元 大单元教学 课件(共9课时).pptx
- 八年级语文下册第六单元24醉翁亭记课件省公开课一等奖新课获奖课件.pptx
- 八年级物理上册第六章质量与密度章末整理与复习习题省公开课一等奖新课获奖课件.pptx
- 外研版三年级英语下册期末复习单词专项.pptx
文档评论(0)