- 1、本文档共114页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法设计及分析课件 第2章 递归及分治
第2章 递归与分治策略 2.1 递归的概念 2.2 分治法的基本思想 2.3 分治法的应用 本章小结 2.1 递归的概念 嵌套与递归 2.1 递归的概念 例2: Fibonacci数列 问题引入 裴波那契(Fibonacci leonardo,约1170-1250)是意大利著名数学家. 在他的著作《算盘书》中许多有趣的问题,最富成功的问题是著名的“兔子繁殖问题”: 如果每对兔子每月繁殖一对子兔,而子兔在出生后第二个月就有生殖能力,试问一对兔子一年能繁殖多少对兔子? 问题分析 2.1 递归的概念 数列的特点 数列的增长速度 自然科学中的若干实例 构造一个新数列 定义及解法 2.1 递归的概念 三种解法的比较 解法1: O(0.618n) 解法2: O(n) 解法3: O(logn) 2.1 递归的概念 思考: 楼梯问题 有一楼梯共有n阶,上楼可以一步上一阶,也可以一步上两阶。 编一个程序,计算共有多少种不同的走法? Ackerman函数 A(n,0)=n+2 A(n,1) = 2n A(n,2) = 2n 。 A(n,4)的增长速度非常快,以致于没有适当的数学式子来表示这一函数。 例4 数列的全排列问题 求n个元素R={r1,r2,…,rn}的全排列perm(R) 。 分析: 当n=1时,perm(R)=(r) 当n1时,perm(R) 由 (r1)perm(R1) (r2)perm(R2) ……… (rn)perm(Rn) 构成。(其中:Ri=R- { ri } ) 例5 整数划分问题 将一个正整数n表示成形如下式的一系列正整数的和,称为n的一个划分。 形如: n=n1+n2+……+nk 其中: (ni≥1,i=1,2,…,k,k≥1)且 n≥n1≥n2≥……≥nk ≥1 2.1 递归的概念 例如:整数6的划分数有11种: 6; 5+1; 4+2, 4+1+1; 3+3, 3+2+1, 3+1+1+1; 2+2+2, 2+2+1+1, 2+1+1+1+1; 1+1+1+1+1+1; 2.1 递归的概念 分析: 将最大加数n1不大于m的划分个数记作q(n,m) 2.1 递归的概念 几个概念 n的r划分 n的r划分数 n的不可重复划分 问题扩展1 将正整数划分成连续的正整数之和。 15=7+8 15=4+5+6 15=1+2+3+4+5 问题扩展2 一个数分解为N个数的和,使这N个数的积为最大 例6 Hanoi塔问题 问题描述: 问题分析: 2.1 递归的概念 2.1 递归的概念 递归求解 void hanoi(int n, int a, int b, int c) { if (n== 1) move(a,b); else { hanoi(n-1, a, c, b); move(a,b); hanoi(n-1, c, b, a); } } 递归函数的运行轨迹 2.1 递归的概念 时间复杂性分析: 规模为n的Hanoi(n)问题,可以分解为2个规模为n-1的Hanoi(n-1)问题和一个Move 操作。 所以,n个盘子的移动次数为: 2.1 递归的概念 264-1=18,446,744,073,709,551,615是个什么概念? 实例1: 假设每秒钟移动一次,一年, 计算表明:移动64个盘子需要5800多亿年。 实例2: 国王的麦子问题 一个高4米、宽10米的粮仓装麦子,这个粮仓有3000万公里长,能绕地球赤道700圈,可以把地球全部表面(包括海洋)铺上2米厚的小麦层!它相当于全世界2000多年小麦产量的总和. 2.1 递归的概念 广义hanoi问题 问题描述 算法分析 递归的优点和缺点 优点: 结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此它为设计算法、调试程序带来很大方便。 缺点: 递归算法的运行效率较低,无论是耗费的计算时间还是占用的存储空间都比非递归算法要多。 消除递归的方法 采用一个用户定义的栈来模拟系统的递归调用工作栈。该方法通用性强,但本质上还是递归,只不过人工做了本来由编译器做的事情,优化效果不明显。 用递推来实现递归函数。 通过变换能将一些递归转化为尾递归,从而迭代求出结果。 注意: 后两种方法在时空复杂度上均有较大改善,但适用范围有限。 2.2 分治法的基本思想 分治法的设计思想是: 将一个难以直接解决的大问题,分割成一些
您可能关注的文档
- 算法合集之《浅谈信息学中状态及合理设计及应用》.ppt
- 算法合集之《浅谈信息学竞赛中及线性规划——简洁高效及单纯形法实现及应用》.ppt
- 算法合集之《浅谈随机化思想在几何问题中及应用》.ppt
- 算法合集之《生成树及计数及其应用》.ppt
- 算法合集之《线段跳表——跳表及一个拓展》.ppt
- 算法合集之《部分贪心在信息学竞赛中及应用》.ppt
- 算法案例 辗转相除法及更相减损术秦九韶算法及进位制第一课时课件-数学高一必修3第一章算法初步1.3人教A版.ppt
- 算法案例第1课时辗转相除法及更相减损术学案课件 新人教A版必修3.ppt
- 算法艺术及信息学竞赛配套课件——动态规划.ppt
- 算法设计及分析--递归.ppt
- 场地脚手架工程施工方案(3篇).docx
- 2024年浙江省丽水市松阳县玉岩镇招聘社区工作者真题及参考答案详解一套.docx
- 2024年河南省郑州市惠济区古荥镇招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省杭州市淳安县文昌镇招聘社区工作者真题及完整答案详解1套.docx
- 2024年浙江省台州市三门县小雄镇招聘社区工作者真题带答案详解.docx
- 2024年浙江省宁波市余姚市河姆渡镇招聘社区工作者真题及完整答案详解1套.docx
- 2024年浙江省丽水市景宁畲族自治县雁溪乡招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省杭州市临安市板桥乡招聘社区工作者真题及答案详解一套.docx
- 2024年湖北省宜昌市点军区土城乡招聘社区工作者真题及答案详解一套.docx
- 2024年浙江省台州市路桥区桐屿街道招聘社区工作者真题附答案详解.docx
最近下载
- JGJ33-2012 建筑机械使用安全技术规程.docx VIP
- TB_10307-2020 铁路通信、信号、信息工程施工安全技术规程.docx VIP
- 简明新疆地方史读本电子版 .pdf VIP
- 基于PLC的加热反应炉自动控制系统设计.pdf VIP
- 抗病毒药物的合理使用课件.pptx VIP
- TB10181-2017 铁路隧道盾构法技术规程.docx VIP
- 静脉输液课件(共87张PPT).pptx VIP
- 《商业银行经营与管理》22春平时作业1答卷.doc VIP
- 2024-2025学年小学美术五年级上册桂美版(2024)教学设计合集.docx
- 2022年版初中物理课程标准新课标考试题库及答案1 .pdf VIP
文档评论(0)