- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 递归与分治策略 学习要点: 理解递归的概念。 掌握设计有效算法的分治策略。 通过下面的范例学习分治策略设计技巧。 (1)二分搜索技术; (2)大整数乘法; (3)Strassen矩阵乘法; (4)棋盘覆盖; (5)合并排序和快速排序; (6)线性时间选择; (7)最接近点对问题; (8)循环赛日程表。 学习如何求解递归式这对于分析递归算法非常有用,主要有5种方法求解递归式。 1.代换法 2.递归树法 3.主方法 4.生成函数法 5.特征方程根 1.代换法求解递归式 1.猜答案(可以不需要知道常数系数确切是多少,仅需要猜它的形式,如n2 ,再试图解出它的常数。即先推测递归方程的显式解) 2.数学归纳法验证递归式。验证是否这个递归式,按照数学归纳法满足条件。即用数学归纳法证明推测的正确性。 3.找出常数。 例1:T(n)=4T(n/2)+n; T(1)=1; 1.猜T(n)=O ( n3 );想办法证明T(n)≤c * n 3 2.假设T(k ) ≤c k3 ( k=n/2)即对k满足T(n)=O ( n3 ),即有T(n/2 ) ≤c (n/2)3 T(n)=4T(n/2)+n (对T(n/2)即对k+1看是否满足假设) ≤4c (n/2) 3 +n = c/2* n 3 +n = c * n 3 –(c/2* n 3 – n ) ≤ c * n 3 (c/2* n 3 – n ≥0,即只要c ≥2就可以) 因此递归式的上界是O ( n3 ); 例1:T(n)=4T(n/2)+n; T(1)= θ (1 ); 1.猜T(n)=O ( n2 );根据符号O的定义,对nn0,有T(n) ≤ c n2 2.假设T(k ) ≤c k2 ( kn ) 把这个解代入递归方程,得到 T(n)=4T(n/2)+n ≤4c (n/2) 2 +n = c* n 2 +n = c * n 2 –(–n) 而–n不是一个正数,无法得出c * n 2 –(–n) ≤ c * n 2 但假定归纳假设条件为: T(k ) ≤c1k2 -c2 k ( kn ) 这里减去c2 k ,因其是低阶项,不会影响到n足够大时的渐近性), 因此T(n)=4T(n/2)+n ≤ 4(c1 (n/2) 2 -c2 (n/2) )+n = c1n2 +n - 2c2 n = c1n2 - c2 n -(c2 n - n) ≤ c1n2 - c2 n (要满足条件 c2 n – n ≥0, 即只要 c2 –1 ≥0,即c2 ≥ 1即可) 即T(k ) ≤c1k2 -c2 k ,对任意的c1, c2 ≥ 1成立; 但必须注意c1要足够大,因为: 基本情况T(1) ≤c1 - c2 而T(1)= θ (1 )即T(1)是常数,我们需要选择c1 ,至少比c2大,而c2 ≥ 1,因此c1要足够大。 如何求出下界,解决办法之一是假设T(k ) ≥ c1k2 -c2 k ( kn ),其余步骤类似。 因此递归式的上界是O ( n2 ); 练习1:T(n)=4T(n/2)+n; T(1)= θ (1 ); 1.猜T(n)=O ( nlogn ); 代换法求解递归式需要先猜出答案大概是多少,这比较困难。 2.递归树法 递归树法不严谨,但很直观,让你知道答案大概是多少。一般我们可以用这种方法求出答案,然后用代换法验证其正确性。 例1:T(n)=2T(n/2)+n; n n/2 n/2 n/4 n/4 n/4 n/4 ……………….. 1 1 1 ….. 1 1 树的高度是logn,叶节点的个数是n,用递归树求解递归式就是将每层的复杂度加起来。如第一层是n,第二层是n/2 + n/2 =n,第三层是n/4 + n/4 + n/4 + n/4 =n…..最后一层(即logn层)是1+1+…+1=n; 第一层+第二层+第三层+…+最后一层=nlogn。 T(n)=2T(n/2)+n的渐进复杂度是O(nlogn) 例:2:T(n)= T(n/4)+ T(n/2)+n2 即假设有个算法,问题的规模为n,先四等分地递归,再二等分地递归,再做一个非递归的n2复杂度的工作。下面用树的形式展开递归。 T(n)=n2
您可能关注的文档
最近下载
- 1安全生产基础档案管理制度、2安全生产责任目标考核奖惩制度、3手残事故应急处置制度、4道路交通安全事故处理报告制度.docx VIP
- 第十章 施工放样测量.pptx VIP
- 2025年邯郸市疾病和预防控制中心人员招聘笔试备考题库及答案解析.docx VIP
- 旧房加固与改造施工方案探讨.docx VIP
- 施工测量放样培训课件.pptx VIP
- YB∕T 4001.1-2019 钢格栅板及配套件 第1部分:钢格栅板.docx VIP
- 施工测量放样(复核)记录表.xlsx VIP
- 施工放样记录表.xls VIP
- YB∕T 4858-2020 用后耐火材料回收利用技术规范.pdf
- 施工放样测量记录表(带计算程序).xls VIP
文档评论(0)