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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

算法设计与分析 全套课件.ppt

1、中国计算机学会 21世纪大学本科计算机专业系列教材 算法设计与分析,王晓东编著,巢湖学院计算机科学与技术系,主要内容介绍,第1章、算法引论第2章、递归与分治策略第3章、动态规划第4章、贪心算法第5章、回溯法第6章、分支限界法第7章、概率算法第8章、NP完全性理论第9章、近似算法第10章、算法优化策略,巢湖学院计算机科学与技术系,第1章 算法引论,1.1算法与程序1.2表达算法的抽象机制1.3描述算法1.4算法复杂性分析,本章主要知识点:,巢湖学院计算机科学与技术系,1.1、算法与程序,算法:是指解决问题的一种方法或一个过程,在计算机领域是指满足下述性质的指令序列。,(1)输入:有外部提供的量作

2、为算法的输入。(2)输出:算法产生至少一个量作为输出。(3)确定性:组成算法的每条指令是清晰,无歧义的。(4)有限性:算法中每条指令的执行次数是有限的,执行每条指令的时间也是有限的。,巢湖学院计算机科学与技术系,1.1、算法与程序,程序:是算法用某种程序设计语言的具体实现。程序可以不满足算法的性质(4)。例如操作系统,是一个在无限循环中执行的程序,因而不是一个算法。操作系统的各种任务可看成是单独的问题,每一个问题由操作系统中的一个子程序通过特定的算法来实现。该子程序得到输出结果后便终止。,巢湖学院计算机科学与技术系,问题求解(Problem Solving),理解问题,精确解或近似解选择数据结

3、构算法设计策略,设计算法,巢湖学院计算机科学与技术系,1.从机器语言到高级语言的抽象,1.2、表达算法的抽象机制,高级程序设计语言的主要好处是:,(4)把繁杂琐碎的事务交给编译程序,所以自动化程度高,开发周期短,程序员可以集中时间和精力从事更重要的创造性劳动,提高程序质量。,(1)高级语言更接近算法语言,易学、易掌握,一般工程技术人员只需 要几周时间的培训就可以胜任程序员的工作;,(2)高级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可靠性高;,(3)高级语言不依赖于机器语言,与具体的计算机硬件关系不大,因而所写出来的程序可植性好、重用率高;,巢湖学院

4、计算机科学与技术系,2.抽象数据类型,1.2、表达算法的抽象机制,抽象数据类型是算法的一个数据模型连同定义在该模型上,并作为算法构件的一组运算。,抽象数据类型带给算法设计的好处有:,(1)算法顶层设计与底层实现分离;(2)算法设计与数据结构设计隔开,允许数据结构自由选择;(3)数据模型和该模型上的运算统一在ADT中,便于空间和时间耗费的折衷;(4)用抽象数据类型表述的算法具有很好的可维护性;(5)算法自然呈现模块化;(6)为自顶向下逐步求精和模块化提供有效途径和工具;(7)算法结构清晰,层次分明,便于算法正确性的证明和复杂性的分析。,巢湖学院计算机科学与技术系,1.3、算法复杂性分析,算法复杂

5、性是算法运行所需要的计算机资源的量,需要时间资源的量称为时间复杂性T(N),需要的空间资源的量称为空间复杂性S(N)。这个量应该只依赖于算法要解的问题的规模、算法的输入和算法本身的函数。如果分别用N、I和A表示算法要解问题的规模、算法的输入和算法本身,而且用C表示复杂性,那么,应该有C=F(N,I,A)。一般把时间复杂性和空间复杂性分开,分别用T和S来表示 则有:T=T(N,I)和S=S(N,I)。(通常,让A隐含在复杂性函数名当中),巢湖学院计算机科学与技术系,1.3、算法复杂性分析,最坏情况下的时间复杂性:,最好情况下的时间复杂性:,平均情况下的时间复杂性:,其中DN 是规模为N的合法输入

6、的集合;I*是DN中使T(N,I*)达到Tmax(N)的合法输入;是中使T(N,)达到Tmin(N)的合法输入;而P(I)是在算法的应用中出现输入I的概率。,巢湖学院计算机科学与技术系,1.3、算法复杂性分析,算法复杂性在渐近意义下的阶:,渐近意义下的记号:O、o 设f(N)和g(N)是定义在正数集上的正函数。,(1)渐近上界O的定义:如果存在正的常数C和自然数N0,使得当NN0时有f(N)Cg(N),则称函数f(N)当N充分大时上有界,且g(N)是它的一个上界,记为f(N)=O(g(N)。即f(N)的阶不高于g(N)的阶。,根据O的定义,容易证明它有如下运算规则:(1)O(f)+O(g)=O

7、(max(f,g);(2)O(f)+O(g)=O(f+g);(3)O(f)O(g)=O(f*g);(4)如果g(N)=O(f(N),则O(f)+O(g)=O(f);(5)O(Cf(N)=O(f(N),其中C是一个正的常数;(6)f=O(f)。,巢湖学院计算机科学与技术系,1.3、算法复杂性分析,(2)渐近下界的定义:如果存在正的常数C和自然数N0,使得当NN0时有f(N)Cg(N),则称函数f(N)当N充分大时下有界,且g(N)是它的一个下界,记为f(N)=(g(N)。即f(N)的阶不低于g(N)的阶。(3)同阶的定义:定义f(N)=(g(N)当且仅当f(N)=O(g(N)且f(N)=(g(N

8、),即(g(n)=f(n)|存在正常数c1,c2和正整数n0使得对所有n n0有:c1g(n)f(n)c2g(n),此时称f(N)与g(N)同阶。定理1:(g(n)=O(g(n)(g(n),巢湖学院计算机科学与技术系,1.3、算法复杂性分析,(4)低阶o的定义:对于任意给定的0,都存在正整数N0,使得当NN0时有f(N)/Cg(N),则称函数f(N)当N充分大时的阶比g(N)低,记为f(N)=o(g(N)。(有的书称之为非紧上界)例如,4NlogN+7=o(3N2+4NlogN+7)。(5)非紧下界记号(g(n)=f(n)|对于任何正常数c0,存在正数和n0 0使得对所有n n0有:0 cg(

9、n)f(n)。注意:f(n)(g(n)g(n)o(f(n),巢湖学院计算机科学与技术系,渐近分析记号在等式和不等式中的意义,f(n)=(g(n)的确切意义是:f(n)(g(n)。一般情况下,等式和不等式中的渐近记号(g(n)表示(g(n)中的某个函数。例如:2n2+3n+1=2n2+(n)表示 2n2+3n+1=2n2+f(n),其中f(n)是(n)中某个函数。等式和不等式中渐近记号O,o,和的意义是类似的。,巢湖学院计算机科学与技术系,渐近分析中函数比较,f(n)=O(g(n)a b;f(n)=(g(n)a b;f(n)=(g(n)a=b;f(n)=o(g(n)a b;,巢湖学院计算机科学与

10、技术系,渐近分析记号的若干性质,(1)传递性:f(n)=(g(n),g(n)=(h(n)f(n)=(h(n);f(n)=O(g(n),g(n)=O(h(n)f(n)=O(h(n);f(n)=(g(n),g(n)=(h(n)f(n)=(h(n);f(n)=o(g(n),g(n)=o(h(n)f(n)=o(h(n);f(n)=(g(n),g(n)=(h(n)f(n)=(h(n);(2)反身性:f(n)=(f(n);f(n)=O(f(n);f(n)=(f(n).(3)对称性:f(n)=(g(n)g(n)=(f(n).(4)互对称性:f(n)=O(g(n)g(n)=(f(n);f(n)=o(g(n)g

11、(n)=(f(n);,巢湖学院计算机科学与技术系,(5)算术运算:O(f(n)+O(g(n)=O(maxf(n),g(n);O(f(n)+O(g(n)=O(f(n)+g(n);O(f(n)*O(g(n)=O(f(n)*g(n);O(cf(n)=O(f(n);g(n)=O(f(n)O(f(n)+O(g(n)=O(f(n)。,渐近分析记号的若干性质,巢湖学院计算机科学与技术系,规则O(f(n)+O(g(n)=O(maxf(n),g(n)的证明:对于任意f1(n)O(f(n),存在正常数c1和自然数n1,使得对所有n n1,有f1(n)c1f(n)。类似地,对于任意g1(n)O(g(n),存在正常数

12、c2和自然数n2,使得对所有n n2,有g1(n)c2g(n)。令c3=maxc1,c2,n3=maxn1,n2,h(n)=maxf(n),g(n)。则对所有的 n n3,有f1(n)+g1(n)c1f(n)+c2g(n)c3f(n)+c3g(n)=c3(f(n)+g(n)c32 maxf(n),g(n)=2c3h(n)=O(maxf(n),g(n).,渐近分析记号的若干性质,巢湖学院计算机科学与技术系,算法渐近复杂性分析中常用函数,(1)单调函数单调递增:m n f(m)f(n);单调递减:m n f(m)f(n);严格单调递增:m f(n).(2)取整函数 x:不大于x的最大整数;x:不小

13、于x的最小整数;,巢湖学院计算机科学与技术系,取整函数的若干性质,x-1 x x x x+1;n/2+n/2=n;对于n 0,a,b是大于0的整数,有:n/a/b=n/ab;n/a/b=n/ab;a/b(a+(b-1)/b;a/b(a-(b-1)/b;f(x)=x,g(x)=x 为单调递增函数。,巢湖学院计算机科学与技术系,(3)多项式函数 p(n)=a0+a1n+a2n2+adnd;ad0;p(n)=(nd);f(n)=O(nk)f(n)多项式有界;f(n)=O(1)f(n)c;k d p(n)=O(nk);k d p(n)=(nk);k d p(n)=o(nk);k d p(n)=(nk)

14、.,算法渐近复杂性分析中常用函数,巢湖学院计算机科学与技术系,算法渐近复杂性分析中常用函数,(4)指数函数 对于正整数m,n和实数a0:a0=1;a1=a;a-1=1/a;(am)n=amn;(am)n=(an)m;aman=am+n;a1 an为单调递增函数;a1 nb=o(an),巢湖学院计算机科学与技术系,算法渐近复杂性分析中常用函数,(5)对数函数 log n=log2n;lg n=log10n;ln n=logen;logkn=(log n)k;log log n=log(log n);for a0,b0,c0,巢湖学院计算机科学与技术系,|x|1 for x-1,for any a

15、 0,logbn=o(na),算法渐近复杂性分析中常用函数,(5)对数函数,巢湖学院计算机科学与技术系,算法渐近复杂性分析中常用函数,(6)阶层函数Stirlings approximation,巢湖学院计算机科学与技术系,算法分析中常见的复杂性函数,巢湖学院计算机科学与技术系,小规模数据,巢湖学院计算机科学与技术系,中等规模数据,巢湖学院计算机科学与技术系,(1)选择语句:(1.1)if 语句:(1.2)?语句:,if(expression)statement;else statement;,exp1?exp2:exp3 y=x9?100:200;等价于:if(x9)y=100;else y

16、=200;,用c+描述算法的常用语句,巢湖学院计算机科学与技术系,switch(expression)case 1:statement sequence;break;case 2:statement sequence;break;default:statement sequence;,(1.3)switch语句:,用c+描述算法的常用语句,巢湖学院计算机科学与技术系,(2.1)for 循环:for(init;condition;inc)statement;(2.2)while 循环:while(condition)statement;(2.3)do-while 循环:do statement;while(condition);,用c+描述算法的常用语句,(2)迭代语句,巢湖学院计算机科学与技术系,(3.1)return语句:return expression;(3.2)goto语句:goto label;label:,用c+描述算法的常用语句,(3)跳转语句:,巢湖学院计算机科学与技术系,算法分析方法举例,例:顺序搜索算法,templateint seqSearch(Type*a,in

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

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