ImageVerifierCode 换一换
格式:PPT , 页数:390 ,大小:4.10MB ,
资源ID:13180676      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/13180676.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(算法设计与分析PPT课件优质PPT.ppt)为本站会员(wj)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

算法设计与分析PPT课件优质PPT.ppt

1、用数m除以 n,得余数 r(0rn)。(2)判余:若余断数数 r=0,出输n,束。结 否,(则转3)。(3)更新被除和除:数数mn,nr,转(1)。10解二.始开入输m、nr=m%nr=0?mn,nr出输n是否11解三.Euclid(int m,int n)int r;while(n!=0)r=m%n;m=n;n=r;printf(“%d”,m)123.算法的描述方法.(1)自然言语(2)流程图(3)程序言设计语13三.算法设计与分析的步骤1.的描述问题.2.模型的选择.3.算法和正确性明设计证.4.算法的分析.5.算法的实现.141.2 算法复杂性分析 算法性是算法行所需要的算机源的量,复杂

2、运计资需要源的量时间资称为时间复杂性,需要的空源的间资量称为空间复杂性。量只依于算法要解的这个应该赖问的模、算法的入和算法本身的函。如果分用题规输数别n、I 和 A 表示算法要解的模、算法的入和算法问题规输本身,而且用 C表示性,那,有复杂么应该C=F(n,I,A)。一般把性和空性分,分用时间复杂间复杂开并别T 和 S来表示,有:则T=T(n,I)和 S=S(n,I)。(通常,让 A含在性函名中)隐复杂数当 15最坏情下的度:况时间复杂),(max)(maxInTnTnDI),(*1Inetkiii),(*InT近度:渐时间复杂平均情下的性:况时间复杂nDIInTIPnT),()()(avgn

3、DIkiiiInetIP),()(1 设 Dn是模规为 n 的合法入的集合;输I*是 Dn中使 T(n,I*)到达Tmax(n)的合法入;而输P(I)是在算法的用中出入应现输I的率。:概则n 时,T(n)的主要部分算法共有 k 种基本步骤,第 i 种步骤所需时间 ti,出现次数 ei.用问题体积 n 表示的运行时间 T(n)称为时间复杂度)(nT16算法复杂度的重要性假设计算机每秒可作 1000 次基本运算17有效算法最佳算法计算问题的分类1.无法出算法的写问题.2.有多式算法的项问题.3.介于上述之的两问题间问题.18例之值。求0111)(axaxaxaxPnnnnn解用最直的方法观2)1(

4、)121()(nnnnnT用 Horner 算法01321)()(axaxaxaaxaxPnnnnnnnT)(Horner(int an+1,real x)int p=an;for(i=1;i=n;i+)p=p*x+an-i;return p;19表示算法渐近复杂度的数学符号:近意下的:渐义记号O、o 设 f(n)和 g(n)是定在正集上的正函。义数数 O 的定义:如果存在正的常数 C和自然数 N0,使得当nN0有时f(n)Cg(n),函则称数 f(n)当 n 充分大上有时界,且 g(n)是的一上界,它个记为 f(n)=O(g(n)。即 f(n)的不高于阶g(n)的。阶 根据 O 的定,义容易

5、明有如下算:证它运规则 (1)O(f)+O(g)=O(max(f,g);(2)O(f)+O(g)=O(f+g);(3)O(f)O(g)=O(fg);(4)如果 g=O(f),则 O(f)+O(g)=O(f);(5)O(Cf)=O(f),其中 C 是一正的常;个数 (6)f=O(f)。20 的定义:如果存在正的常数 C和自然数 N0,使得当 nN0时有 f(n)Cg(n),函则称数 f(n)当 n 充分大下有界,且时g(n)是的一下界,它个记为 f(n)=(g(n)。即 f(n)的不低于阶g(n)的。阶 的定义:定义 f(n)=(g(n)且当仅当 f(n)=O(g(n)且f(n)=(g(n)。此

6、时称 f(n)与 g(n)同。阶 o 的定义:于任意定的对给 0,都存在正整数 N0,使得当 n N0有时f(n)/g(n),函则称数 f(n)当 n 充分大的比时阶g(n)低,记为 f(n)=o(g(n)。例如,4nlogn+7=o(3n2+4nlogn+7)。21第第 2 2 章 递归与章 递归与分治策略分治策略凡治众如治寡,分数是也。-孙子兵法222.1 递归的概念递归的概念直接或接地用自身的小模式的算法间调较称为递归算法递归算法。用函自身的小模式出其定的函数较给义数称为递归函数递归函数。由分治法生的子往往是原的小模产问题问题较式,子的度也原度的小模问题复杂问题复杂较式,就使用技行算法分

7、析提供了这为递归术进方便。分治像一生兄弟,常同用在与递归对孪经时应算法之中,由此生多高效算法。设计并产许23例例 1 1 阶乘函数阶乘函数阶乘函数可递归地定义为:00)!1(1!nnnnn边界条件边界条件递归方程递归方程界件方程是函的二要素,函边条与递归递归数个递归只有具了要素,才能在有限次算后得出数备这两个计果。结下面看几例来个实:factorial(int n)if(n=0)return 1;else return factorial(n-1);T(n)=T(n-1)+1,T(n)=O(n)24nnn)1(321!乘函可以找到相的非方式定:阶数应递归义 factorial(int n)in

8、t i,p=1;i+)p=p*i;循环 n 次,故 T(n)=n25Illustration例 2 Fibonacci 数列26Fibonacci列的前数10 项为1,1,2,3,5,8,13,21,34,55,可以地定:它递归义为边界条件边界条件递归方程递归方程第 n 个 Fibonacci 数可递归地计算如下:fibonacci(int n)if(n 1),和A(1,1)=2,得 A(n,1)=2*nm=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

9、(n,4)的增长速度非常快,以至于没有适当的数学式子来表示这一函数。个nnA2222)3,(1,20)1),1(),(2)0,(1),0(2)0,1(mnnmmmnAAmnAnnAmAAn230定义单变量的 Ackerman 函数 A(n)为,A(n)=A(n,n)。定义其拟逆函数(n)为:(n)=mink A(k)n。即(n)是使 nA(k)成立的最小的 k值。(n)在复杂度分析中常遇到。对于通常所见到的正整数 n,有(n)4。但在理论上(n)没有上界,随着 n 的增加,它以难以想象的慢速度趋向正无穷大。个65536222)4,4(A31例例 4 4 排列的生成问题排列的生成问题设计一个递归

10、算法生成 n 个元素 r1,r2,rn 的全排列。设 R=r1,r2,rn是要行排列的进n元素,个Ri=Rri。集合 X 中元素的全排列记为 perm(X)。(ri)perm(X)表示在全排列 perm(X)的每一排列前加上前个缀 ri得到的排列。R 的全排列可定如下:归纳义 当 n=1,时perm(R)=(r),其中 r 是集合 R 中唯一的元素;当 n1,时perm(R)由(r1)perm(R1),(r2)perm(R2),(rn)perm(Rn)成。构 32perm(list,int k,int m)/产生前缀是产生前缀是 list0:k-1,后缀是 后缀是 listk:m 的所有排列的

11、所有排列 /perm(list,0,n-1)产生 产生 list0:n-1 的去全排列的去全排列 if(k=m)/单元素排列单元素排列 for(int i=0;i=m;i+)cout listi;cout endl;else /多元素序列,递归产生排列多元素序列,递归产生排列 for(int i=k;im1;正整数 n 的最大加数 n1不大于 m的分由划n1=m 的分和划n1m-1 的分成。划组(3)q(1,m)=1,m1;3711,1),()1,()1,(1),(1),(mnmnmnmnmmnqmnqnnqnnqmnq然,正整显数 n 的分划数 p(n)=q(n,n)。q(int n,int

12、 m)if(m=1|n=1)return 1;else if(n 0)hanoi(n-1,a,c,b);move(a,b);hanoi(n-1,c,b,a);)2()(1)1(2)(nOnTnTnT40例例.描述描述 n=3n=3 时时,hanoi(n,a,b,c)的运行过程。的运行过程。层次栈状态塔状态13,a,b,ccba32122,a,c,b3,a,b,ccba13231,a,b,c2,a,c,b3,a,b,c层次栈状态塔状态cba21322,a,c,b3,a,b,ccba23131,c,a,b2,a,c,b3,a,b,c2,a,c,b3,a,b,c241层次栈状态塔状态层次栈状态塔状态

13、13,a,b,ccba22,b,a,c3,a,b,c3 21cba23131,b,c,a2,b,a,c3,a,b,ccba31222,b,a,c3,a,b,ccba32131,a,b,c2,b,a,c3,a,b,c42cba32122,b,a,c3,a,b,c层次栈状态塔状态cba3213,a,b,c1层次栈状态塔状态cba321 栈空043递归小结递归小结优点:优点:结构清晰,可读性强,而且容易用数学归纳法来证明算法的正确性,因此它为设计算法、调试程序带来很大方便。缺点:递归算法的运行效率较低,无论是耗费的计算时间还是占用的存储空间都比非递归算法要多。44递归小结递归小结解决方法:解决方法:

14、在递归算法中消除递归调用,使其转化为非递归算法。1.采用一个用户定义的栈来模拟系统的递归调用工作栈。该方法通用性强,但本质上还是递归,只不过人工做了本来由编译器做的事情,优化效果不明显。2.用递推来实现递归函数。3.通过 Cooper 变换、反演变换能将一些递归转化为尾递归,从而迭代求出结果。后两种方法在时空复杂度上均有较大改善,但其适用范围有限。45nT(n/2)T(n/2)T(n/2)T(n/2)T(n/2)T(n/2)T(n/2)T(n/2)T(n)=分将问题为 a子,个问题对这 a子分求解。如个问题别果子的模仍然不小,每子再分问题规够则个问题划为 a子,如此的行下去,直到模足小个问题递归进问题规够,很容易求出其解止。为2.2 2.2 分治法的基本思分治法的基本思想想46求出的小模的的解合一更大模的的将规问题并为个规问题解,自底向上逐步求出原的解。来问题分治算法的程序具有的特点递归nT(n)=n/2T(n/4)T(n/4)T(n/4)T(n/4)T(n/4)T(n/4

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1