算法设计与分析演示幻灯片.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
演示文稿演讲PPT学习教学课件医学文件教学培训课件

算法设计与分析;课程目的;主要内容介绍;教学用书;T. Cormen, C. Leiserson, R. Rivest, and C. Stein Introduction to Algorithms, 2nd Ed. MIT Press and McGraw-Hill Book Company, 2001;D. E. Knuth The Art of Computer Programming, Vol. 1 and 3, Third Edition, Addison Wesley, 1997. ;第1章 算法引论;二. 算法的基本概念;例. ;解二. ;1.2 算法复杂性分析;最坏情况下的时间复杂度:;;有效算法;例;表示算法渐近复杂度的数学符号:; Ω的定义:如果存在正的常数C和自然数N0,使得当n?N0时 有f(n)?Cg(n),则称函数f(n)当n充分大时下有界,且g(n)是它的一个下界,记为f(n)=Ω(g(n))。即f(n)的阶不低于g(n)的阶。 ;第2章 递归与分治策略;2.1 递归的概念;例1 阶乘函数 阶乘函数可递归地定义为:;阶乘函数可以找到相应的非递归方式定义:;例2 Fibonacci数列;Fibonacci数列的前10项为1,1,2,3,5,8,13,21,34,55,…,它可以递归地定义为: ;生成函数法!;例3 Ackerman函数 当一个函数及它的一个变量是由函数自身定义时,称这个函数是双递归函数。 Ackerman函数A(n,m)定义如下: ;Ackerman函数 A(n,m)的自变量m的每一个值都定义了一个单变量函数: m=0时,A(n,0)=n+2 m=1时,由A(n,1)=A(A(n-1,1),0)=A(n-1,1)+2(n1),和A(1,1)=2,得A(n,1)=2*n m=2时,A(n,2)=A(A(n-1,2),1)=2A(n-1,2),和A(1,2)=A(A(0,2),1)=A(1,1)=2,故A(n,2)= 。 m=3时,类似的可以推出 m=4时,A(n,4)的增长速度非常快,以至于没有适当的数学式子来表示这一函数。 ; 定义单变量的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的增加,它以难以想象的慢速度趋向正无穷大。 ;例4 排列的生成问题 设计一个递归算法生成n个元素{r1,r2,…,rn}的全排列。 ;perm( list[], int k, int m) {//产生前缀是list[0:k-1],后缀是 list[k:m]的所有排列 //perm(list,0,n-1)产生 list[0: n-1]的去全排列 if (k==m) ? {//单元素排列 ?? for (int i=0; i=m; i++) ??? cout list[i]; ?? cout endl; ? } ? else ? {//多元素序列,递归产生排列 ?? for (int i=k; i=m; i++) ?? {swap(list[k],list[i]); ??? perm(list,k+1,m); ??? swap(list[k],list[i]); ?? } ? } };例. 产生123的所有排列;2;例5 整数划分问题 将正整数n表示成一系列正整数之和:n=n1+n2+…+nk, 其中n1≥n2≥…≥nk≥1,k≥1。 正整数n的这种表示称为正整数n的划分。求正整数n的不 同划分个数。 例如正整数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。 ;设q(n,m)为n的最大加数n1不大于m的划分个数。则:;显然,正整数n的划分数p(n)=q(n,n)。 ;例6 Hanoi塔问题 设a,b,c是3个塔座。开始时,在塔座a上有一叠共n个圆盘,这些圆盘自下而上,由大到小地叠在一起。各圆盘从小到大编号为1,2,…,n,现要求将塔座a上的这一叠圆盘移到塔座b上,并仍按同样顺序叠置。在移动圆盘时应遵守以下移动规则: 规则1:每次只能移动1个圆盘; 规则2:任何时刻都不允许将较大的圆盘压在较小的圆盘之上; 规则3:在满足移动规则1和2的前提下,可将圆盘移至a,b

文档评论(0)

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

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

1亿VIP精品文档

相关文档