第递归与分治策略冯.pptxVIP

  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文档。上传文档
查看更多
2022-8-31 1 本章要点 5.1 概 述 5.2 递 归 5.3 排序问题中的分治法 5.4 组合问题中的分治法 5.5 几何问题中的分治法 5.6 实验项目——最近对问题 第1页/共97页 2022-8-31 2 5.1.1 分治法的设计思想 5.1.2 分治法的求解过程 概 述 第2页/共97页 2022-8-31 3 将一个难以直接解决的大问题,划分成一些规模较小的子问题,以各个击破,分而治之。更一般地说,将要求解的原问题划分成k个较小规模的子问题,对这k个子问题分别求解。如果子问题的规模仍然不够小,则再将每个子问题划分为k个规模更小的子问题,如此分解下去,直到问题规模足够小,很容易求出其解为止,再将子问题的解合并为一个更大规模的问题的解,自底向上逐步求出原问题的解。 分治法的设计思想: 概述-分治法思想 第3页/共97页 2022-8-31 4 2. 独立子问题:各子问题之间相互独立,这涉及到分治法的效率,如果各子问题不是独立的,则分治法需要重复地解公共的子问题。 1. 平衡子问题:最好使子问题的规模大致相同。也就是将一个问题划分成大小相等的k个子问题(通常k=2、4,…),这种使子问题规模大致相等的做法是出自一种平衡(Balancing)子问题的思想,它几乎总是比子问题规模不等的做法要好。 启发式规则: 概述-分治法思想 第4页/共97页 2022-8-31 5 分治法的典型情况 概述-分治法思想 第5页/共97页 2022-8-31 6 5.1.1 分治法的设计思想 5.1.2 分治法的求解过程 概 述 第6页/共97页 2022-8-31 7 一般来说,分治法的求解过程由以下三个阶段组成: (1)划分:既然是分治,当然要把规模为n 的原问题划分为 k 个规模较小的子问题,并尽量使这 k 个子问题的规模大致相同。 (2)求解子问题:各子问题的解法与原问题的解法通常是相同的,可以用递归的方法求解各个子问题,有时递归处理也可以用循环来实现。 (3)合并:把各个子问题的解合并起来,合并的代价因情况不同有很大差异,分治算法的有效性很大程度上依赖于合并的实现。 概述-分治法的求解过程 第7页/共97页 2022-8-31 8 概述-分治法的求解过程 第8页/共97页 2022-8-31 9 例:计算an,应用分治技术得到如下计算方法 分析时 间性能 第9页/共97页 2022-8-31 10 讨论 a^n的蛮力法计算复杂度为O(n),因为: …… a=1; For (i=1; i=n;i++) {a=a*a;} …… A^n的通用分治递推式主定理(第一章中),其复杂度为O(nlog2n) 概述-分治法的求解过程 结论:不是所有的分治法都比简单的蛮力法更有效。 第10页/共97页 2022-8-31 11 本章要点 5.1 概 述 5.2 递 归 5.3 排序问题中的分治法 5.4 组合问题中的分治法 5.5 几何问题中的分治法 5.6 实验项目——最近对问题 第11页/共97页 2022-8-31 12 4.2 递归 5.2.1 递归的概念 5.2.2 递归函数的运行轨迹 5.2.3 递归函数的内部执行过程 第12页/共97页 2022-8-31 13 递归的概念 直接或间接地调用自身的算法称为递归算法(Recursion)。用函数自身给出定义的函数称为递归函数。是一种描述问题和解决问题的基本方法。 由分治法产生的子问题往往是原问题的较小模式,这就为使用递归技术提供了方便。在这种情况下,反复应用分治手段,可以使子问题与原问题类型一致而其规模却不断缩小,最终使子问题缩小到很容易直接求出其解。这自然导致递归过程的产生。 第13页/共97页 2022-8-31 14 递归的概念 分治与递归像一对孪生兄弟,经常同时应用在算法设计之中,并由此产生许多高效算法。 递归有两个基本要素: ⑴ 边界条件:确定递归到何时终止; ⑵ 递归模式:大问题是如何分解为小问题的。 递归的几个实例 第14页/共97页 2022-8-31 15 例1 阶乘( Factorial )函数 阶乘函数可递归地定义为: 边界条件 递归方程 递归的概念 第15页/共97页 2022-8-31 16 递归的概念 第16页/共97页 2022-8-31 17 例2 Fibonacci斐波纳契兔子数列 无穷数列1,1,2,3,5,8,13,21,34,55,…,被称为Fibonacci数列。它可以递归地定义为: 边界条件 递归方程 第n个Fibonacci数可递归地计算如下: public static int fibonac

文档评论(0)

kuailelaifenxian + 关注
官方认证
文档贡献者

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

认证主体太仓市沙溪镇牛文库商务信息咨询服务部
IP属地上海
统一社会信用代码/组织机构代码
92320585MA1WRHUU8N

1亿VIP精品文档

相关文档