- 1、本文档共71页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法设计与分析 第二章ppt
第一章 算法概述
第二章 递归与分治策略
第三章 动态规划
第四章 贪心算法
第五章 回朔法
第六章 分支限界法
第七章 概率算法
算法设计与分析 目录
1
2
算法设计与分析 递归与分治
2.1 递归的概念
直接或间接地调用自身的算法称为递归算法。
由分治法产生的子问题往往是原问题的较小模式,为使用递归技术提供了方便。
反复应用分治手段,可以使子问题与原问题类型一致而其规模却不断缩小,最终使子问题缩小到很容易直接求出其解,自然导致递归过程的产生。
3
算法设计与分析 递归与分治
相关概念
当子问题足够大,需要递归求解时,称为递归情况;
当子问题足够小时,不再需要递归时,递归进入“触底”,进入基本情况;
用函数自身给出定义的函数称为递归函数;
递归式是一个等式或不等式,它通过更小的输入上的函数值来描述一个函数.
4
递归函数的内部执行过程
(1)运行开始时,为递归调用建立一个工作栈,其结构包括实参、局部变量和返回地址;
(2)每次执行递归调用之前,把递归函数的实参和局部变量的当前值以及调用后的返回地址压栈;
(3)每次递归调用结束后,将栈顶元素出栈,使相应的实参和局部变量恢复为调用前的值,然后转向返回地址指定的位置继续执行
算法设计与分析 递归与分治
5
算法设计与分析 递归与分治
例2-3 Ackerman函数
当一个函数及它的一个变量是由函数自身定义时,称这个函数是双递归函数。
Ackerman函数A(n,m)定义如下:
该变量是由函数自身定义
6
分析:
A(n,m)的自变量m的每一个值都定义了一个单变量函数:
M=0时, A(n,0)=n+2
M=1时 A(1,1)=2 和 A(n,1)=A(A(n-1,1),0)=A(n-1,1)+2,
故A(n,1)=2*n (上式是一个递推公式,每当n-1便加2)
M=2时,A(1,2)=A(A(0,2),1)=A(1,1)=2
A(n,2)=A(A(n-1,2),1)=2A(n-1,2), 故A(n,2)= 2n 。
M=3时,类似的可以推出
M=4时,A(n,4)的增长速度非常快,以至于没有适当的数学式子来表示这一函数。
算法设计与分析 递归与分治
7
算法设计与分析 递归与分治
1、证明 A(1,1)=2
因为n,m=1使用递推式(4) 得 A(1,1)=A(A(0,1),0)
由A(0,m)=1,故 A(1,1)=A(1,0)
由(1)式 A(1,0)=2 所以A(1,1)=2
2、证明A(n,1)=2n (n=1)
因为n, m=1 使用递归式(4) 得A(n,1)=A(A(n-1,1),0)
由公式(3) A(n,1)=A(n-1,1)+2
由此式看出m=1 时,n每降一阶就增加2, 一直降到n=1 即A(1,1)共增加n个2,n 个2相加和为2n
所以A(n,1)=2n
8
算法设计与分析 递归与分治
3、证明当m=2时 A(n,2)=2n
由递推式(4) A(n,2)=A(A(n-1,2),1),此时已经演变为m=1的情况,式中A(n-1,2) 相当于2节中的n的位置,因此利用2节的结论有 A(n,2)=2A(n-1,2)
可以看出随着n的降阶会增长2的倍数,那么当n降为1时即
A(1,2)的情况如何呢?
根据递推式(4)有
A(1,2)=A(A(0,2),1), 再由公式(2) A(0,m)=1
故A(1,2)=A(1,1)=2
所以A(n,2)随着n的降阶每次乘2,共乘n次得A(n,2)=2n
公式得证
定义单变量的Ackerman函数A(n)为:
A(n)=A(n, n)。
定义其拟逆函数α(n)为:
α(n)=min{k|A(k)≥n}。
即α(n)是使n≤A(k)成立的最小的k值。
α(n)在复杂度分析中常遇到。对于通常所见到的正整数n,有α(n)≤4。但在理论上α(n)没有上界,随着n的增加,它以难以想象的慢速度趋向正无穷大。
算法设计与分析 递归与分治
9
递归树
T(n) = 3T(n/4) + O(n 2 )
算法设计与分析 递归与分治
10
算法设计与分析 递归与分治
11
12
补充:主方法(定理)
求解这类递推式的方法是主方法,主方法依赖于下面的主定理,使用主定理可直接得到递推式的解。
定理(主定理): a≥1且b1是常数, f(n)是一个函数,T(n)由如下的递推式定义:T(n)=aT(n/b)+f(n),式中,n/b指n/b或n/b,则T(n)有如下的渐近界:
(1)若对于某常数є0,有f(n)=O(nlogba-є),则T(n)=(nlogba);
(2)若f(n)
您可能关注的文档
- 第四章 营业税(答案).ppt
- 第四章 通过含氮化合物中间体的合成反应.ppt
- 第四章 预应力混凝土.doc
- 第四章 纺纱生产工艺.ppt
- 第四章++淀粉质原料的蒸煮.ppt
- 第四章 解析空中三角测量新.ppt
- 第四章 第二节 北京的时间和“北京时间”.ppt
- 第四章 矿床学-气水热液矿床.ppt
- 第四章-基础知识Guass型求积公式与正交多项式.ppt
- 第四章-热力学函数与定律-4.ppt
- 分析let s单元56ago2卷纸zheng unit56.pdf
- 塑胶材料其它分类原料pa9t 12.pdf
- md16x16数字媒体切换器设备.pdf
- 者参考项目发起人学科类型单位序列承包商修订页代码顺序典型.pdf
- 届世界天然气大会阿姆斯特丹2006add10288.pdf
- 期测试记录表每周weekly g1g6 journeys tests level 6 lesson26.pdf
- modernize-whitepaper现代化您应用程序白皮书.pdf
- anybackup产品典型案例分析.pdf
- 约克金融工程课程tfeslide32.pdf
- 广州市妇女儿童医疗中心历份教学药历01tjy.pdf
文档评论(0)