算法设计与分析 第二章ppt.pptx

  1. 1、本文档共71页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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)

文档评论(0)

yaocen + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档