第2.2算法资料.pptVIP

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
递归式 例如: 怎样解递归式? 忽略技术细节 1.代换法 代换法例子 做一个好的猜测 证明时常出现的问题 正确的证明过程 改变变量 II. 迭代法 直接展开 例如 例如 递归树 构建递归树 通过递归树来计算 一个更复杂的例子 通过递归树计算 利用代换法证明 III. 主方法 例子 讨论 课堂练习 作业 * * 如前讲述,分治算法是种解复杂问题很有效的算法。 分治算法中总是采用递归机制进行问题求解,因而其计算复杂度可以由递归关系式进行表达。 分治算法复杂度特点 合并排序 将n个元素的排序问题划分为两个n/2个元素排序子问题,其计算复杂度计算有如下的递归关系式 目前的一些方法: 代换法 递归树方法 主方法 怎样比较各个分治算法的效率? 假设n 可能是非整数. 忽略掉上取整和下取整,即n/2 可能是非整数. 忽略掉边界条件: 在进行分析时先忽略这些细节,而后再确定其重要与否 代换法(Substitution Method ) 主要思想: 1、猜测解的形式. 2、 通过数学归纳法找出使解真正有 效的常数. T(n)=2T(n/2)+n 猜测 T(n)=O(n lgn). 证明对某一常数c0,有 T(n)≤cnlgn 假设 T(k)≤ck lgk ,对kn 并 用归纳法证明 T(n)≤cn lgn (注意: c是相同值!) T(n)≤2c(n/2)lg(n/2)+n ≤cnlg(n/2)+n ≤cnlgn-cnlg2+n = cnlgn-cn+n ≤cnlgn 只要 c≥1 如果某个递归式与先前见过的类似,则可猜测该递归式有类似的解 T(n)=2T(n/2+10)+n 先证明递归式的较松的上下界,然后再缩小不确定性区间 T(n)=Ω(n) and T(n)=O(n2) 猜测 T(n)=Θ(nlgn) 让我们看另外一个例子 : T(n)=4T(n/2)+n 猜测 T(n)=O(n2) 通过数学归纳法证明. 假设 T(k)≤ck2 ,对所有的 kn. 通过归纳法: T(n)= 4T(n/2)+n ≤ 4c(n/2)2+n ≤ cn2+n = O(n2) 什么导致了错误? 错误! 上式中我们必须证明 T(n)≤cn2成立,这一归纳假设的准确形式,但是 T(n) ≤ cn2+n !≤ cn2 对于任意的 c0 !=O(n2) ?=O(n3) 归纳假设不够强,增强归纳假设 思想:归纳假设中去掉一些低阶项来修改我们猜测的界 假设 T(k)≤c1k2-c2k ,对于 kn 证明: T(n)≤c1n2-c2n 通过归纳 T(n)= 4T(n/2)+n ≤ 4[c1(n/2)2-c2(n/2)]+n = c1n2-c2n-(c2n-n) ≤ c1n2-c2n 如果 c2≥1 T(n)=O(n2) T(n)=2T(n1/2)+lgn 通过用下面的替换来简化递归式 m=lgn n=2m 我们得到 T(2m)=2T(2m/2)+m 重命名 S(m)= T(2m) 我们得到 S(m)=2S(m/2)+m 可获得 S(m)=O(mlgm) =O(lgnlglgn) 两种方法 (代数algebraic 和几何geometrical) 直接展开 (algebraic) 递归树 (geometrical) 思想:模拟该递归关系执行过程,从而计算算法运行时间 思想:展开递归关系式并将该展开的递归关系式表达成仅依赖于n和初始条件的各项之和的形式。 T(n)=3T(n/4)+Θ(n2) T(n) cn2 T(n/4) T(n/4) T(n/4) c(n/4)2 c(n/4)2 c(n/4)2 T(n/16) T(n/16) T(n/16) T(n/16) T(n/16) T(n/16) T(n/16) T(n/16) T(n/16) c(n/16)2 c(n/16)2 c(n/16)2 c(n/16)2 c(n/16)2 c(n/16)2 c(n/16)2 c(n/16)2 c(n/16)2 画出该递归关系式的递归树 树中每个节点都代表递归函数调用集合中一个子问题的代价 每一层的代价相加得到一个每层代价的集合 每层代价相加得到递归的总代价. cn2 c(n/4)2 c(n/4)2 c(n/4)2 c(n/16)2 c(n/16)2 c(n/16)2 …… …… T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) log4n cn2 3/16cn2

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档