武汉大学《算法设计与分析》教学课件-5递归技术.ppt

武汉大学《算法设计与分析》教学课件-5递归技术.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Algorithms Design Techniques and Analysis 算法分析 假定每次乘法的时间是常数,那么这两个版本的算法的运行时间是?(logn), ,它对于输入的大小来说是线性的。 Algorithms Design Techniques and Analysis 5.5多项式求值(Horner’s规则) 问题描述 : 假设有n+2个实数a0, a1,…,an和x的序列,要对如下多项式求值。 直接的方法是对每一项分别求值。 这种方法是十分低效的,因为它需要n+n-1+…+1=n(n+1)/2次乘法。 Algorithms Design Techniques and Analysis 更快的方法(Horner’s rule) 基本思想 首先观察 这种求值的安排称为Homer规则。 导出: 得到以下更有效的方法 Algorithms Design Techniques and Analysis 算法5.6 HORNER Input: n+2 个实数a0, a1,…,an x的序列 Output: . 1. p? an 2. for j?1 to n 3. p?xp+ an-j 4. end for 5. return p Algorithms Design Techniques and Analysis 算法分析 算法HORNER的复杂度代价是n次乘法和n次加法, 这是利用归纳假设的优点得到的令人瞩目的成绩。 Algorithms Design Techniques and Analysis 5.6 Generating permutations(生成排列) 问题描述 研究对于数1,2…n生成所有的排列问题,基于一个假设:我们可以生成n-1个数的所有排列。 * 要构造一个简单生成集合{1,2,3,…,n}的所有排列的算法。观察发现: 如果整数n从{1,2,3,…,n}的一个排列中删除,那么结果则是{1,2,3,…,n-1}的一个排列。 5.6 Generating permutations(生成排列) Algorithms Design Techniques and Analysis 5.6.1 第一种算法 基本思想 假定可以生成n-1个数的所有排列 生成数2,3,…,n的所有排列,并且在每个排列的前面加上数1 接下来,生成数1,3,4,..,n的所有排列,并且在每个排列的前面加上数2。 重复这个过程直到最后生成1,2,..,n-1的所有排列,并且在每个排列的前面加上数n。 Algorithms Design Techniques and Analysis 算法5.7 PERMUTATIONS1 Input: 正整数n. Output: 数1,2,…,n.的所有可能排列 1. for j?1 to n //生成数组 2. P[j]?j 3. end for 4. perm1(1) 过程 perm1(m) 1. if m=n then output P[1…n] 2. else 3. for j?m to n 4. 互换 P[j] and P[m] 5. perm1(m+1) 6. 互换 P[j] and P[m] 7. comment: at this point P[m..n]=m, m+1, …, n 8. end for 9. end if Algorithms Design Techniques and Analysis 算法分析 由于存在有n!个排列,过程perml的第1步共有nn!次来 输出所有的排列。 现在计算for循环的循环次数。 在第一次调用过程perm1时, m = 1 ,因此for循环执行n次加上递归调用perml(2)的执行次数。 由于当n=1时反复次数是0,因此反复次数f( n)能够用以下递推式表示 (书本p105) Algorithms Design Techniques and Analysis 算法分析(继续) 令 n!h(n)=f(n) (注意 h(1)=0). (书本p105) 那么 这个递推式的解是 这里e

文档评论(0)

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

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

1亿VIP精品文档

相关文档