算法第二章导引详解.ppt
《算法第二章导引详解.ppt》由会员分享,可在线阅读,更多相关《算法第二章导引详解.ppt(47页珍藏版)》请在三一办公上搜索。
1、第二章 导引与基本数据结构,目录,2.1 算法2.2 分析算法2.3 用SPARKS语言写算法2.4 基本数据结构(略),2.1 算 法,什么是算法算法的重要特性计算过程与算法的区别问题的求解过程算法学习的基本内容,什么是算法,算法是解决一确定类问题的任意一种特殊的方法。数值计算方法非数值计算方法算法的非形式描述:算法就是一组有穷的规则,它规定了解决某一特定类型问题的一系列运算。,求解数值问题,插值计算、数值积分等。,求解非数值问题,主要进行判断比较。,算法(Algorithm)的五个重要特性,确定性:每一种运算必须要有确切定义,无二义性。例如:(1)5/0;(2)6或7与x相加。能行性:运算
2、都是基本运算,原理上能由人用纸和 笔在有限时间完成。输 入:有0个或多个输入。输 出:一个或多个输出。有穷性:在执行了有穷步运算后终止。,仅仅有穷还不够,还要在现代计算机上有效才行。,计算过程与算法的区别,计算过程可以不满足算法的性质(5)有穷性。例如操作系统,当没有任务时,操作系统并不终止,而是处于等待状态,直到有新的任务启动,因而不是一个算法。程序=算法+数据结构(By Niklaus Wirth),问题的求解过程,算法学习的基本内容,如何设计算法如何表示算法如何确认算法如何分析算法如何测试程序,如何设计算法,面对具体问题,运用一些基本设计策略被实践证明是有用的一些基本设计策略计算机科学、
3、运筹学、电器工程等领域设计出很多精致有效的好算法掌握这些策略,设计出更多的好算法,如何表示算法,设计的算法要用恰当的方式地表示出来采用结构程序设计的方式SPARKS程序设计语言简单明了,如何确认算法,算法确认(algorithm validation)证明该算法对所有可能的合法输入,都能给出正确答案算法确认的目的确保该算法能正确无误地工作穷举法推理数学归纳法、反证法构造性证明测试,如何分析算法,分析执行一个算法时,占用CPU时间完成运算;占用存储器的存储空间,存放程序和数据。既对一个算法需要多少计算时间和存储空间,做定量分析。,如何测试程序,调试调试只能指出有错误,而不能指出它们不存在错误。源
4、于程序正确性的证明还没有取得突破性进展。时空分布图用各种给定数据执行调试后的程序测定计算时间和空间印证之前的分析是否正确指出实现最优化的有效逻辑位置,2.2 分析算法,算法分析目的算法分析的准备工作计算时间的渐进表示一些证明方法作时空性能分布图,算法分析的目的,算法分析(analysis of algorithms)是对一个算法需要多少计算时间和存储空间作定量的分析。确定算法在什么样的环境下能够有效地运行。分析在最好、最坏和平均情况下的执行情况。对同一问题不同算法的有效性作出比较。,时间复杂性的形式化定义,算法的时间复杂性T(n);算法的空间复杂性S(n);其中n是问题的规模。,最坏情况下:T
5、max(n)=max T(I)|size(I)=n 最好情况下:Tmin(n)=min T(I)|size(I)=n 平均情况下:Tavg(n)=其中I是问题的规模为n的实例,p(I)是实例I出现的概率。,算法运行假定的计算机类型,要求独立于具体的软硬件环境单纯分析算法。假定使用一台通用计算机顺序处理每条指令;存储容量足够大;存取时间恒定。,算法分析过程,确定算法所涉及的运算,分析算法语句的执行次数,分析算法的执行时间的渐进表示,确定出能反映算法在各种情况下工作的数据集,作时空性能分布图,事前分析,准备工作,事后测试,全面分析的两个阶段,准备工作(一),首先确定使用哪些运算以及执行这些运算所用
6、的时间。基本运算由一些更基本的任意长序列的运算所组成的复杂运算,基本运算,时间囿界于常数的运算加、减、乘、除整数算术运算浮点算术、字符比较、对变量赋值、过程调用等每种运算所用时间虽然不同,但都只花费一个固定量的时间,复杂运算,由一些更基本的任意长序列的运算组成如:两个字符串的比较运算一系列字符比较指令一个字符的比较时间囿界于常数字符串比较的时间总量则取决于字符串的长度,准备工作(二),其次是要确定出能反映算法在各种情况下工作的数据集。编造出能产生最好、最坏和有代表性情况的数据配置通过使用这些数据来运行算法,以更了解算法的性能。,算法分析最重要和最富于创造性的工作。,全面分析算法的两个阶段,事前
7、分析(a priori analysis)确定每条语句的执行次数。求出该算法的一个时间限界函数(一些关于参数的函数)。事后测试(a posterior testing)作时空性能分布图。,算法的执行时间,同一条语句在一个算法中的执行次数(frequency count)称为频率计数语句的时间总量=频率计数执行一次该语句所需要的时间算法的执行时间就是构成算法的所有语句的执行时间总量之和,由算法就可直接确定,与所用的机器无关,且独立于程序设计语言。,依赖机器、程序设计语言、编译程序,例:计算语句xz+y在下面三个程序段中的频率计数,beginxz+yendFC:1,beginfor i1 to n
8、 doxz+yendFC:n,beginfor i1 to n do for j1 to n doxz+yendFC:n2,语句的数量级是指执行它的频率算法的数量级是指算法的所有语句的执行频率之和,确定一个算法的数量级十分重要,因为它在本质上反映了算法所需的计算时间。,算法的数量级,计算时间的基本特性,描述算法数量级的多项表达式最高次项最高次项的系数最高次项的次数,准确分析出算法数量级的多项式表达式是很困难的,因此我们对事前分析的计算时间进行渐进表示。,计算时间的渐进表示,定义2.1:f(n)=O(g(n)定义2.2:f(n)=(g(n)定义2.3:f(n)=(g(n)定理2.1,变量和函数的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 第二 导引 详解
链接地址:https://www.31ppt.com/p-6329408.html