第5章 算法与复杂性.ppt
《第5章 算法与复杂性.ppt》由会员分享,可在线阅读,更多相关《第5章 算法与复杂性.ppt(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第5 5章章 算法与复杂性算法与复杂性2计算机科学导论计算机科学导论学习目标学习目标了解算法的概念和特性、算法的描述工具、评价、算法设了解算法的概念和特性、算法的描述工具、评价、算法设计策略、分布式算法、可计算性理论基础、计策略、分布式算法、可计算性理论基础、NPNP问题、自动问题、自动机理论、加密算法、几何算法、并行算法等。机理论、加密算法、几何算法、并行算法等。掌握几种经典算法的基本思想。掌握几种经典算法的基本思想。一个好的算法是程序设计的关键,本章首先介绍算法的基一个好的算法是程序设计的关键,本章首先介绍算法的基本知识、常用算法及算法评价的基础知识,然后介绍几种本知识、常用算法及算法评
2、价的基础知识,然后介绍几种常用的算法,为今后进一步学习算法及其复杂性打好基础。常用的算法,为今后进一步学习算法及其复杂性打好基础。第第5 5章章 算法与复杂性算法与复杂性3计算机科学导论计算机科学导论5.1 算法分析基础算法分析基础 5.1.1 算法的概念算法的概念算法(算法(Algorithm)是一组明确的、可以执行步骤)是一组明确的、可以执行步骤的有序集合,在有限的时间内终止并产生结果。的有序集合,在有限的时间内终止并产生结果。算法和数据结构之间存在密切联系,数据结构是算法和数据结构之间存在密切联系,数据结构是算法的基础,数据结构不同,通常采用的算法也算法的基础,数据结构不同,通常采用的算
3、法也不同。不同。4计算机科学导论计算机科学导论5.1.2 算法的特性算法的特性算法反映了求解问题的方法和步骤,不同的问题算法反映了求解问题的方法和步骤,不同的问题需要用不同的算法来解决,同一个问题也可能有需要用不同的算法来解决,同一个问题也可能有多种不同的算法。一个算法必须具有以下特性:多种不同的算法。一个算法必须具有以下特性:u1.有穷性有穷性(可终止性可终止性)一个算法必须在有限的操作步骤内以及合理的时一个算法必须在有限的操作步骤内以及合理的时间内执行完成。间内执行完成。u2.确定性确定性算法中的每一个操作步骤都必须有明确的含义,算法中的每一个操作步骤都必须有明确的含义,不允许存在二义性。
4、不允许存在二义性。5计算机科学导论计算机科学导论u3.有效性有效性(可行性可行性)包括以下两个方面:包括以下两个方面:算法中每一个步骤必须能够实现,如算法中每一个步骤必须能够实现,如在算法中不允许出现分母为在算法中不允许出现分母为0的情况。的情况。算法执行的结果要能够达到预期的目算法执行的结果要能够达到预期的目的,实现预定的功能。的,实现预定的功能。u4.输入数据与输出数据的要求输入数据与输出数据的要求一个算法应该有一个算法应该有0个或多个输入数据、有个或多个输入数据、有1个或多个输出数据。个或多个输出数据。5.1.2 算法的特性算法的特性6计算机科学导论计算机科学导论5.2 常用算法介绍常用
5、算法介绍1.递归算法递归算法如果一个过程(函数,子程序)直接或间接地调如果一个过程(函数,子程序)直接或间接地调用它本身,则称该过程是递归的。用它本身,则称该过程是递归的。7计算机科学导论计算机科学导论5.2 常用算法介绍常用算法介绍2.迭代算法迭代算法迭代是指重复执行一组指令或操作步骤,在每次迭代是指重复执行一组指令或操作步骤,在每次执行这组指令时,都在原来的解的基础上推出一执行这组指令时,都在原来的解的基础上推出一个新解,新的解比原来的解值更加接近真实的解。个新解,新的解比原来的解值更加接近真实的解。这个过程不断重复,直到最后计算得到的解与真这个过程不断重复,直到最后计算得到的解与真实的解
6、的误差满足实践的要求。实的解的误差满足实践的要求。8计算机科学导论计算机科学导论5.2 常用算法介绍常用算法介绍3.穷举算法穷举算法穷举算法亦称枚举算法,该算法首先根据问题的穷举算法亦称枚举算法,该算法首先根据问题的部分条件确定问题的大致范围,然后在此范围内部分条件确定问题的大致范围,然后在此范围内对所有可能的情况逐一进行验证,直到全部情况对所有可能的情况逐一进行验证,直到全部情况验证完毕。验证完毕。若某个情况使验证结果符合题目的条件,则为本若某个情况使验证结果符合题目的条件,则为本题的一个答案,若全部情况验证完成后均不符合题的一个答案,若全部情况验证完成后均不符合题目条件,则判定该问题无解。
7、题目条件,则判定该问题无解。9计算机科学导论计算机科学导论5.2 常用算法介绍常用算法介绍4.贪婪算法贪婪算法贪婪算法也称贪心算法,是通过一系列的选择,贪婪算法也称贪心算法,是通过一系列的选择,最终得到问题的解。算法做出的每一个选择都是最终得到问题的解。算法做出的每一个选择都是在当前状态下的最优选择。在当前状态下的最优选择。10计算机科学导论计算机科学导论5.3 算法描述工具算法描述工具算法是要通过程序才能加以实现的。常用的算法描述方式算法是要通过程序才能加以实现的。常用的算法描述方式:u1.自然语言自然语言自然语言就是人们日常使用的语言,可以是中文、英文等。自然语言就是人们日常使用的语言,可
8、以是中文、英文等。例如,求例如,求3个数中最大者的问题,可以描述为:个数中最大者的问题,可以描述为:比较前两个数。比较前两个数。将将中较大的数与第三个数进行比较。中较大的数与第三个数进行比较。步骤步骤中较大的数即为所求。中较大的数即为所求。11计算机科学导论计算机科学导论u2.流程图流程图流程图是用规定的一组图形符号、流程线和文字说明来描述算法流程图是用规定的一组图形符号、流程线和文字说明来描述算法的一种表示方法。的一种表示方法。(1)顺序结构。程序执行完顺序结构。程序执行完A语句后接着执行语句后接着执行B语句,如图所示。语句,如图所示。(2)选择结构。当条件选择结构。当条件P成立时,则执行成
9、立时,则执行A语句,否则执行语句,否则执行B语句,语句,如图所示。如图所示。P成立AB不成立5.3 算法描述工具算法描述工具12计算机科学导论计算机科学导论(3)当型循环结构。当条件当型循环结构。当条件P成立时,则成立时,则循环执行循环执行A语句,如图所示语句,如图所示(4)直到型循环结构。循环执行直到型循环结构。循环执行A语句,语句,直到条件直到条件P1成立为止,如图所示。成立为止,如图所示。5.3 算法描述工具算法描述工具13计算机科学导论计算机科学导论u3.伪代码伪代码伪代码是用一种介于自然语言与计算机语言之间的文字和符伪代码是用一种介于自然语言与计算机语言之间的文字和符号来描述算法,它
10、比计算机语言形式灵活、格式紧凑,没有号来描述算法,它比计算机语言形式灵活、格式紧凑,没有严格的语法。严格的语法。例如,求两个数的较大者,用伪代码描述算法如下:例如,求两个数的较大者,用伪代码描述算法如下:Find the bigger Input:two number s:a,b 1.if(the first number a is greater than or equal to the second number b)then 1.1 return a else 1.2 return b end if end5.3 算法描述工具算法描述工具14计算机科学导论计算机科学导论5.4 算法的评价
11、算法的评价u对于一个算法的评价,通常要从正确性、可理解性、对于一个算法的评价,通常要从正确性、可理解性、健壮性、时间复杂度健壮性、时间复杂度(Time Complexity)及空间复杂度及空间复杂度(Space Complexity)等多个方面加以衡量。等多个方面加以衡量。1算法的时间复杂度算法的时间复杂度时间复杂度是度量时间的复杂性,即算法的时间效率的指标。时间复杂度是度量时间的复杂性,即算法的时间效率的指标。2算法的空间复杂度算法的空间复杂度 算法的空间复杂度是度量空间的复杂性,即执行算法的程序在计算法的空间复杂度是度量空间的复杂性,即执行算法的程序在计算机中运行时所占用空间的大小。算机中
12、运行时所占用空间的大小。15计算机科学导论计算机科学导论5.5 算法设计策略算法设计策略一个优秀的算法可以运行在比较慢的计算机上,但一个优秀的算法可以运行在比较慢的计算机上,但一个劣质的算法在一台性能很强的计算机上也不一一个劣质的算法在一台性能很强的计算机上也不一定能满足应用的需要,因此,在计算机程序设计中,定能满足应用的需要,因此,在计算机程序设计中,算法设计往往处于核心地位。算法设计往往处于核心地位。要想充分理解算法并有效地应用于实际问题中,关要想充分理解算法并有效地应用于实际问题中,关键是对算法的分析。通常可以利用实验对比分析、键是对算法的分析。通常可以利用实验对比分析、数学方法来分析算
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第5章 算法与复杂性 算法 复杂性
限制150内