




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、算法设计与分析主讲教师:刘春凤、宫秀军天津大学计算机系n课程目的:n计算机算法设计与分析导引n介绍算法分析概念n介绍算法设计的主要方法和基本思想;n能够用算法思想编写程序,并能分析算法复杂度n不是程序设计课,也不是数学课n课程安排n成绩评定方法:笔试+平时作业+出勤n上课时间及地点: 周一上午(单周),3 ,4节,46-A306 周一下午,5,6节,46-A306nSlides download: AlgorithmDesign2016 at http:/ nSartaj Sahni,Data Structures, Algorithms, and Applications in C+, 机械
2、工业出版社,2000 (影印版)nSartaj Sahni著,汪诗林等译,数据结构、算法与应用-C+语言描述,机械工业出版社,2003 (翻译版)nT. H. Cormen, C. E. Leiserson, R. L. Rivest and C. Stein, Introduction to Algorithms (the second edition),The MIT Press,2001算法导论(第二版)(影印版,中文版),高等教育出版社,2003 n7070年代前年代前n计算机科学基础的主题没有被认清计算机科学基础的主题没有被认清。n7070年代年代nDonald E. Knuth出版
3、了出版了The Art of Computer The Art of Computer ProgrammingProgrammingn以算法研究为主线以算法研究为主线n确立了算法为计算机科学基础的重要主题确立了算法为计算机科学基础的重要主题n19741974年获得图灵奖。年获得图灵奖。n7070年代后年代后n算法作为计算机科学领域的核心推动了计算机科学技术算法作为计算机科学领域的核心推动了计算机科学技术飞速发展飞速发展.n解决一个计算问题的过程解决一个计算问题的过程可计算否可计算否软件系统软件系统用计算机语言实现算法用计算机语言实现算法算法设计与分析算法设计与分析能行可计算否能行可计算否 n算
4、法(算法(algorithmalgorithm)是对特定问题求解步骤的一种描)是对特定问题求解步骤的一种描述,是指令的有限序列。述,是指令的有限序列。n具有以下具有以下5 5个特征个特征: :n输入(输入(inputinput):算法有零个或多个输入量;):算法有零个或多个输入量;n输出(输出(outputoutput):算法至少产生一个输出量;):算法至少产生一个输出量;n确定性(确定性(definitenessdefiniteness):算法的每一条指令都有确):算法的每一条指令都有确切的定义,没有二义性;切的定义,没有二义性;n能行性(能行性(effectivenesseffective
5、ness):算法的每一条指令必须足):算法的每一条指令必须足够基本,它们可以通过已经实现的基本运算执行有限够基本,它们可以通过已经实现的基本运算执行有限次来实现;次来实现;n有穷性(有穷性(finitenessfiniteness):算法必须总能在执行有限步):算法必须总能在执行有限步之后终止。之后终止。n程序是算法用某种程序设计语言的程序是算法用某种程序设计语言的具体实现。具体实现。n程序是算法用某种程序设计语言的程序是算法用某种程序设计语言的具体实现具体实现。n程序可以不满足算法的性质程序可以不满足算法的性质(5)(5)。n例:操作系统,是例:操作系统,是程序还是算法程序还是算法? ?n操
6、作系统,是一个在无限循环中执行的程序,因而不是一操作系统,是一个在无限循环中执行的程序,因而不是一个算法。个算法。n操作系统的各种任务可看成是单独的问题,每一个问题由操作系统的各种任务可看成是单独的问题,每一个问题由操作系统中的一个子程序通过特定的算法来实现。该子程操作系统中的一个子程序通过特定的算法来实现。该子程序得到输出结果后便终止序得到输出结果后便终止。n算法是计算机科学的算法是计算机科学的基础基础,更是程序设,更是程序设计的计的基石基石,只有具有良好的算法基础才,只有具有良好的算法基础才能成为训练有素的软件人才。能成为训练有素的软件人才。n算法的目的是算法的目的是求解问题求解问题。n常
7、见的应用问题类型有常见的应用问题类型有n 1. 1. 搜索问题搜索问题n 所谓搜索,就是在所谓搜索,就是在给定的数据集合给定的数据集合中寻找满足条件的数中寻找满足条件的数据对象。据对象。n例如,在图书管理中,若要了解全部读者的借阅信息,就例如,在图书管理中,若要了解全部读者的借阅信息,就需要对每一位读者的借阅记录依次输出,这是数据对象的需要对每一位读者的借阅记录依次输出,这是数据对象的遍历问题。如果我们要查找借书超期的读者,则是按照规遍历问题。如果我们要查找借书超期的读者,则是按照规定的最大借书期限这一特征值去查找满足该条件的记录。定的最大借书期限这一特征值去查找满足该条件的记录。2. 2.
8、排序问题排序问题 所谓排序,就是把一组所谓排序,就是把一组无序的数据按照一定的规则排列按照一定的规则排列起来。排序结果有起来。排序结果有升序和降序两种。两种。n例如,为便于查询学生的考试成绩,对于成绩单,通常按例如,为便于查询学生的考试成绩,对于成绩单,通常按照学号排序;而在招生录取中,也可以按照成绩的高低排照学号排序;而在招生录取中,也可以按照成绩的高低排序。序。n对于同一个问题,排序的算法是多种的,如插入排序、选对于同一个问题,排序的算法是多种的,如插入排序、选择排序、交换排序等。择排序、交换排序等。3. 3. 图论问题图论问题 n图论问题主要研究图论问题主要研究数据结构是图形结构或树形结
9、构数据结构是图形结构或树形结构的算法问题的算法问题。简单的定义,可以认为图是由一些顶。简单的定义,可以认为图是由一些顶点和顶点之间的边所构成的集合。点和顶点之间的边所构成的集合。n图结构可以用来对各种各样的实际应用问题建模,图结构可以用来对各种各样的实际应用问题建模,包括包括交通和通讯网络、工程项目时间表和各种竞赛交通和通讯网络、工程项目时间表和各种竞赛。图应用算法主要包括图的遍历算法、最短路径算法、图应用算法主要包括图的遍历算法、最短路径算法、最小生成树算法、拓扑排序算法和网络流算法等。最小生成树算法、拓扑排序算法和网络流算法等。4.4.组合数学问题组合数学问题 n有一些问题要求寻找一个组合
10、对象,比如一个排列、一有一些问题要求寻找一个组合对象,比如一个排列、一个组合或者一个子集,这些对象能够满足特定的条件并个组合或者一个子集,这些对象能够满足特定的条件并具有我们想要的特性具有我们想要的特性( (如价值最大化或者成本最小化如价值最大化或者成本最小化) )。从更抽象的角度来看,这类问题是组合数学问题,例如从更抽象的角度来看,这类问题是组合数学问题,例如旅行旅行售货商问题和图着色售货商问题和图着色问题。问题。n组合数学问题所涉及的应用领域更加广阔,例如拓扑学、组合数学问题所涉及的应用领域更加广阔,例如拓扑学、图论、博弈论、线性规划等。组合数学问题的特点是随图论、博弈论、线性规划等。组合
11、数学问题的特点是随着问题规模的增加,已达到计算机的处理能力的极限。着问题规模的增加,已达到计算机的处理能力的极限。所以,组合数学问题是计算机中的难解问题。所以,组合数学问题是计算机中的难解问题。5.5.几何问题几何问题 n几何算法处理类似于点、线、多面体这样的几何对象。几何算法处理类似于点、线、多面体这样的几何对象。n经典的计算几何问题,如最近点对问题和凸包问题。经典的计算几何问题,如最近点对问题和凸包问题。n顾名思义,最近点对问题求的是在给定平面上的顾名思义,最近点对问题求的是在给定平面上的n n个点个点中,寻找距离最近的两个点。中,寻找距离最近的两个点。n凸包问题要求找一个能把给定集合中所
12、有点包含都在里凸包问题要求找一个能把给定集合中所有点包含都在里面最小凸多边形。面最小凸多边形。n当前,几何问题算法在计算机图形学、机器人技术和断当前,几何问题算法在计算机图形学、机器人技术和断层层X X摄像技术等方面都有广泛的应用。摄像技术等方面都有广泛的应用。 6.6.数值计算问题数值计算问题n数值计算问题是另一大类问题,它要解决的问题包数值计算问题是另一大类问题,它要解决的问题包括:求解方程或者方程组和求数值积分等。括:求解方程或者方程组和求数值积分等。n这些问题常常只能给出一个近似的结果,而不是精这些问题常常只能给出一个近似的结果,而不是精确的解析答案。确的解析答案。 n问题求解(问题求
13、解(problem solvingproblem solving)是寻找一种方法来实现)是寻找一种方法来实现目标。目标。n计算机求解问题的关键之一是寻找一种问题求解策略计算机求解问题的关键之一是寻找一种问题求解策略(problem solving strategyproblem solving strategy),得到求解问题的算法,),得到求解问题的算法,从而得到问题的解。从而得到问题的解。一般情况一般情况, ,问题求解过程包括问题求解过程包括: :n 理解问题理解问题n 预测所有可能的输入预测所有可能的输入 n 在精确解和近似解之间间做选择在精确解和近似解之间间做选择n 确定适当的数据结构
14、确定适当的数据结构n 算法设计技术算法设计技术: :贪心法、分治法、动态规划法等贪心法、分治法、动态规划法等n 描述算法描述算法n 跟踪算法跟踪算法n 分析算法效率分析算法效率n 根据算法编写代码根据算法编写代码n 算法分类算法分类n一个精确算法(一个精确算法(exact algorithmexact algorithm)总能保证求得)总能保证求得问题的解。问题的解。n一个启发式算法(一个启发式算法(heuristic algorithmheuristic algorithm)通过使)通过使用某种规则、简化或智能猜测来减少问题求解时间。用某种规则、简化或智能猜测来减少问题求解时间。 n对于最优
15、化问题,若一个算法如果致力于寻找近似解对于最优化问题,若一个算法如果致力于寻找近似解而不是最优解,被称为近似算法(而不是最优解,被称为近似算法(approximation approximation algorithmalgorithm)n 如果在算法中需做出某些随机选择,则称为随机算法如果在算法中需做出某些随机选择,则称为随机算法(randomized algorithmrandomized algorithm)n使用面向计算机的问题求解策略使用面向计算机的问题求解策略- -算法设计策算法设计策略(略(algorithm design strategyalgorithm design str
16、ategy)。n 算法描述方法算法描述方法n自然语言自然语言 n流程图流程图 n伪代码伪代码 n程序设计语言程序设计语言 本课程使用本课程使用 C+C+语言描述算法语言描述算法 n确认一个算法是否正确的活动称为算法验证(确认一个算法是否正确的活动称为算法验证(algorithm algorithm validationvalidation) n使用数学方法证明算法的正确性,称为算法证明使用数学方法证明算法的正确性,称为算法证明(algorithm proofalgorithm proof)。)。 n程序测试(程序测试(program testingprogram testing)是指对程序模块
17、或程序)是指对程序模块或程序总体,输入事先准备好的样本数据(称为测试用例,总体,输入事先准备好的样本数据(称为测试用例,test casetest case),检查该程序的输出,来发现程序存在的),检查该程序的输出,来发现程序存在的错误及判定程序是否满足其设计要求。错误及判定程序是否满足其设计要求。n算法分析(算法分析(algorithm analysisalgorithm analysis)活动是指对算法的)活动是指对算法的执行时间和所需空间的估算执行时间和所需空间的估算n当然在算法写成程序后,便可使用样本数据,实际测当然在算法写成程序后,便可使用样本数据,实际测量一个程序所消耗的时间和空间
18、,这称为程序的性能量一个程序所消耗的时间和空间,这称为程序的性能测量(测量(performance measurementperformance measurement)n程序的性能程序的性能n指指程序运行时所需的内存空间量和计算时间程序运行时所需的内存空间量和计算时间: :系统开系统开销和求解问题本身的开销销和求解问题本身的开销. .n忽略系统开销忽略系统开销, ,区分出算法的性能区分出算法的性能. .n为什么要研究性能?设计满足要求的算法为什么要研究性能?设计满足要求的算法. .n怎样定义怎样定义“要求要求”?需要某种度量指标?需要某种度量指标. .n很多问题找不到满足要求的算法。很多问题
19、找不到满足要求的算法。n性能评价的方法性能评价的方法n解析的方法解析的方法n测量的方法测量的方法n本课程算法评价以本课程算法评价以解解析方法析方法为主算法分析为主算法分析n算法复杂性是算法运行所需要的计算机资源的量,需算法复杂性是算法运行所需要的计算机资源的量,需要时间资源的量称为要时间资源的量称为时间复杂性时间复杂性,需要的空间资源的,需要的空间资源的量称为量称为空间复杂性空间复杂性。n算法复杂性只依赖于算法要解的问题的规模、算法的算法复杂性只依赖于算法要解的问题的规模、算法的输入和算法本身的函数输入和算法本身的函数n问题和问题的实例问题和问题的实例n 排序问题排序问题: 任意给定具有任意给
20、定具有“序序”的关系的集合的关系的集合U上的上的n个元个元素,素,(给出一算法给出一算法)将这些元素按将这些元素按“从小到大从小到大”进行排列。进行排列。n问题实例问题实例(算法输入算法输入):任给:任给n100个整数,试将其排序。个整数,试将其排序。n算法必须对任意问题实例都能给出结果算法必须对任意问题实例都能给出结果-算法的一般性。算法的一般性。n算法使用一些能机械执行的基本操作算法使用一些能机械执行的基本操作-算法的机械性。算法的机械性。n算法由有穷长度的一组规则组成算法由有穷长度的一组规则组成(例如有限自动机,例如有限自动机, 语言写语言写的程序的程序)。n实例长度实例长度(size)
21、:表示实例的数据结构的长度。例如,向量表示实例的数据结构的长度。例如,向量的长度的长度nu, u为单个元素的字节数。为了简化分析,我们往为单个元素的字节数。为了简化分析,我们往往忽略往忽略u,而用实例特征表示实例长度。,而用实例特征表示实例长度。n实例特征实例特征:描述问题实例长度:描述问题实例长度(size)的参数。例如矩阵的阶的参数。例如矩阵的阶数数n是反映实例长度是反映实例长度(n2)的参数。的参数。n选取选取n为实例特征。为实例特征。n实例特征的选取有随意性,但要能客观地反应问题的规模。实例特征的选取有随意性,但要能客观地反应问题的规模。n算法分析建立算法执行时间或空间占用与实例特征的
22、函数关算法分析建立算法执行时间或空间占用与实例特征的函数关系。系。2.2 空间复杂度(Space Complexity)n程序程序p的的空间复杂度空间复杂度指程序运行时所需的内存空指程序运行时所需的内存空间大小和实例特征的函数关系。间大小和实例特征的函数关系。n记为记为Sp(n)n程序运行时所需空间包括程序运行时所需空间包括:n指令空间指令空间-与实例特征无关的常数与实例特征无关的常数n数据空间:常量和简单变量数据空间:常量和简单变量-实例无关实例无关 复合变量复合变量(数组、链表、树和图等数组、链表、树和图等) 环境栈空间环境栈空间(函数调用函数调用)-是否递归是否递归?n复合变量所需空间常
23、常和问题实例特征有关复合变量所需空间常常和问题实例特征有关n程序程序p的空间需求量包括两部分:的空间需求量包括两部分: S(p)=c+Sp(instance characteristics) c为常量为常量(实例无关部分实例无关部分),Sp为可变部分为可变部分n在使用解析方法研究程序在使用解析方法研究程序p的空间复杂度仅考虑函的空间复杂度仅考虑函数数Sp(instance characteristics)n在分析空间复杂度时我们忽略与实例特征无关的空在分析空间复杂度时我们忽略与实例特征无关的空间需求量间需求量。2.2 空间复杂度(Space Complexity) (续)Program 2.1
24、 Sequential search实例特征:n,S(n)=0nT a T a 和和 T& xT& x需需2 bytes 2 bytes 指针指针( (假定假定T T为整型为整型) )n形参形参 n n 需需2 bytes2 bytesn i i 需需2 bytes 2 bytes n以上均为实例特征独立的空间需求量,所以以上均为实例特征独立的空间需求量,所以s(n)=0s(n)=0n注注: :上述分析是从程序调用的角度看上述分析是从程序调用的角度看, ,存放无序表的存放无序表的数组占用的空间记在上层程序的帐上数组占用的空间记在上层程序的帐上. .Program Program 1.8 Add
25、 a0:n-1实例特征:n,S(n)=0Program 1.9 Recursive code to add a0:n-1实例特征:n ,递归栈需6 bytes S(n)=6(n+1)bytes Program 1.7 Recursive function to compute n!实例特征实例特征:n, S(n)= 4*maxn,1n对非递归算法对非递归算法n分析与实例特征有关的数据结构的大小分析与实例特征有关的数据结构的大小n对递归算法对递归算法n还要分析递归调用的深度和实例特征的关系还要分析递归调用的深度和实例特征的关系2.3 时间复杂度(time complexity)n时间复杂度时间复
26、杂度指程序执行时所用的时间。指程序执行时所用的时间。n在使用解析方法时,程序在使用解析方法时,程序p p的时间复杂度表示为输入量的的时间复杂度表示为输入量的函数函数T T。n机器独立的分析方法机器独立的分析方法- -解析的方法解析的方法. .n在解析地分析时间复杂度时在解析地分析时间复杂度时, ,使用以下两种时间单位并计使用以下两种时间单位并计算:算:n操作计数操作计数( (operation count):operation count):算法的基本操作算法的基本操作n( (程序程序) )步计数步计数( (step count):step count):分析全部程序分析全部程序n要点要点:
27、:基本操作或程序步的执行时间必须是常数。基本操作或程序步的执行时间必须是常数。Program 1.31 Finding the largest elements如果包含其他operations,则时间复杂度某常数*t(n)。实例特征 : n ,operation: comparison t(n)=n-1 且不可少于n-1例题2.7 Max ElementProgram 2.3 A function to evaluate a polynomial 实例特征 : n ,operation: multiplication, t(n)=2n Program 2.4 Horners rule for polynomial evaluation Horners rule: t(n)=nProgram 2.5 Computing ranksInstance size : n ,operation: comparison,t(n)=n*(n-1)/2n例如例如a=4,3,9,3,7 a=4,3,9,3,7 则则r=2,0,4,1,3r=2,0,4,1,3n又如又如a a9,3,9,3,79,3,9,3,7则则r=3,0,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 废水处理效率预测模型-洞察与解读
- 2025广东省生物制品与药物研究所招聘12人模拟试卷及答案详解(新)
- 2025北京中关村第三小学教育集团招聘模拟试卷及答案详解(名校卷)
- 2025广东江门市蓬江区教师招聘23人(编制)考前自测高频考点模拟试题及参考答案详解一套
- 班组月安全教育培训内容课件
- 2025年及未来5年中国菜谱app行业市场运行态势与投资战略咨询报告
- 智能穿戴健康监测-第13篇-洞察与解读
- 2025年长春市绿园区公办幼儿园公开招聘临聘人员(13人)考前自测高频考点模拟试题及完整答案详解
- 班组安全管理及培训内容课件
- 2025湖南岳阳市平江县第四期就业见习单位招聘2人模拟试卷附答案详解(模拟题)
- 2025合伙制合同协议书
- 福建省全国名校联盟2026届高三上学期联合开学摸底考试语文试题及参考答案
- 心血管衰老的分子机制探索
- 医院收费室培训课件
- 重点小学小学语文毕业总复习小升初资料大全
- 高原健康培训课件
- 血站差错管理课件
- GB/T 18266.2-2025体育场所等级的划分第2部分:健身房
- 第4节 跨学科实践:电路创新设计展示-教科版九年级《物理》上册教学课件
- DGTJ08-2310-2019 外墙外保温系统修复技术标准
- 光电美容培训课件
评论
0/150
提交评论