计算机算法设计与分析第1章算法概述.ppt
《计算机算法设计与分析第1章算法概述.ppt》由会员分享,可在线阅读,更多相关《计算机算法设计与分析第1章算法概述.ppt(61页珍藏版)》请在三一办公上搜索。
1、 四川师范大学 计算机科学学院 刘芳,计算机算法设计与分析 Design and Analysis of Computer Algorithm,刘 芳四川师范大学计算机学院邮箱:电话:,四川师范大学 计算机科学学院 刘芳 2,课程基本情况,课程性质:学科专业主干课程(计算机科学与技术专业)专业拓展应用提高课程(软件工程专业)学时与学分48理论学时(3学分)32实验学时(1学分)考核方式平时成绩:30%期末成绩:70%,四川师范大学 计算机科学学院 刘芳 3,参考书籍,算法分析与设计,美Michael T.Goodrich Roberto Tamassia 著,人民邮电出版社计算机算法基础,余祥
2、宣等著,华中科技大学出版社计算机算法导引设计与分析:卢开澄编著,清华大学出版社计算机算法设计与分析,苏德富著,电子工业出版社计算机算法设计与分析导论(第三版 影印版),S.Baase and,高等教育出版社,四川师范大学 计算机科学学院 刘芳 4,课程的学习目的与任务,目的与任务:本课程将覆盖计算机软件实现中常用的、有代表性的算法,并具有一定的深度和广度。知道计算机领域中解决不同问题的一系列标准算法;具备设计新算法和分析其效率的能力,锻炼逻辑思维能力和想象力,并了解算法理论的发展。运用算法知识解决各自学科的实际问题,培养独立科研的能力和理论联系实践的能力。,四川师范大学 计算机科学学院 刘芳
3、5,第1章 算法概述,学习要点:理解算法的概念。理解什么是程序,程序与算法的区别和内在联系。掌握算法的计算复杂性概念。掌握算法渐近复杂性的数学表述。,四川师范大学 计算机科学学院 刘芳 6,第1章 算法概述,1.1 算法1.1.1 问题求解的基本流程1.1.2 什么是算法1.1.3 算法和程序1.1.4 算法设计方法1.1.5 算法分析方法1.2 算法复杂性分析1.2.1 算法的复杂性分析1.2.2 算法复杂性的渐近分析,四川师范大学 计算机科学学院 刘芳 7,问题求解的基本流程,问题求解(Problem Solving),四川师范大学 计算机科学学院 刘芳 8,1.1.2 什么是算法,算法算
4、法是一系列解决问题的清晰的指令,对符合一定规范的输入,在有限时间内获得所要求的输出。基本特征:确定性/有穷性/可行性/输入/输出其他属性:健壮性/可读性经济性,四川师范大学 计算机科学学院 刘芳 9,算法和程序,算法的重要性:程序算法数据结构 计算机语言和开发工具只是编程的工具,掌握工具固然重要,但更重要的是掌握方法!开发工具会不断地更新,新的计算机语言会不断地出现,今天学会的东西可能明天就会过时;但基本的算法却不会有太大改变。掌握了程序设计的算法,无论再学习何种语言和开发工具都可以很快地上手。资料阅读,四川师范大学 计算机科学学院 刘芳 10,1.1.3 算法和程序,几个观点:程序设计算法不
5、是数学概念中的狭隘算法,而是计算机领域中对问题的思考方式及解决步骤,是一种思路和逻辑性的体现。很多算法已经被包含到了语言和工具中,还有必要学习算法吗?,四川师范大学 计算机科学学院 刘芳 11,1.1.3 算法和程序,程序程序是算法用某种程序设计语言的具体实现。算法与程序算法的含义与程序十分相似,但二者是有区别的。一个程序不一定满足有穷性程序中可以包含死循环;程序中的指令必须是机器可执行的,而算法中的指令则无此限制。一个算法若用计算机语言来书写,则它就可以是一个程序。,四川师范大学 计算机科学学院 刘芳 12,1.1.4 算法设计方法,常见的算法设计方法分治法动态规划法贪心法回溯法分支限界法线
6、性规划与网络流,四川师范大学 计算机科学学院 刘芳 13,1.1.5 算法分析方法,算法的“好”与“不好”正确性时间效率空间效率是否存在更好的算法下界最优,四川师范大学 计算机科学学院 刘芳 14,1.1.6 算法分析方法,分析方法1:实验分析过程:输入样本的准备插入一些计数器计算基本操作的执行次数记录程序的运行时间计算机时钟精度小的问题将是0分时系统时间包括其他开销,四川师范大学 计算机科学学院 刘芳 15,1.1.6 算法分析方法,分析方法1:实验分析局限性实验只能在有限的测试输入集上进行;相同的硬件和软件环境下执行两个算法的运行时间的实验,否则难以比较两个算法的效率;需要实现并执行一个算
7、法,才能以实验的方式研究它的运行时间。,四川师范大学 计算机科学学院 刘芳 16,1.1.6 算法分析方法,分析方法2:理论(数学)分析(优势)可以考虑所有可能的输入;允许独立于软硬件环境来评估任意两个算法的相对效率;无需真正实现算法和执行算法,通过研究算法的高级描述就能进行算法分析。其目标是:将每个算法与一个函数f(n)关联起来,而f(n)能够根据输入大小n表征算法的运行时间。,四川师范大学 计算机科学学院 刘芳 17,1.1.6 算法分析方法,分析方法2:理论(数学)分析(劣势)数学分析是不够的可能数学上无法分析求解特别是平均性能的分析,四川师范大学 计算机科学学院 刘芳 18,1.2 算
8、法复杂性分析,算法复杂性 算法所需要的计算机资源算法的时间复杂性算法的空间复杂性注意:对算法的分析,必须脱离具体的计算机结构和程序设计语言。关于算法的复杂性,有两个问题要弄清楚:用怎样的一个量来表达一个算法的复杂性;对于给定的一个算法,怎样具体计算它的复杂性。,四川师范大学 计算机科学学院 刘芳 19,1.2算法复杂性的分析,算法的复杂性 C=F(N,I,A),时间复杂性T=T(N,I,A)或T=T(N,I),空间复杂性S=S(N,I,A)或S=S(N,I),N:问题的规模 I:输入数据 A:算法本身,四川师范大学 计算机科学学院 刘芳 20,1.2.1 算法时间复杂性的分析,1.将时间复杂性
9、函数T(N,I)具体化设一台抽象计算机提供的元运算有k种,分别记作:O1,2,Ok,而这些元运算每执行一次所需时间分别为t1,t2,tk,设算法A中用到Oi的次数为 ei,i=1,k,则 ei=ei(N,I)则:,四川师范大学 计算机科学学院 刘芳 21,1.2.1 算法复杂性的分析,2.三种情况下的时间复杂性,四川师范大学 计算机科学学院 刘芳 22,1.2.1 算法复杂性的分析,四川师范大学 计算机科学学院 刘芳 23,例如:,最坏情况时间,最好情况时间,平均情况时间?,6ms,四川师范大学 计算机科学学院 刘芳 24,1.2.1 算法复杂性的分析,一般来说最好情况的时间复杂性对于问题的任
10、意确定的规模N达到了Tmin(N)的合法输入难以确定平均情况的时间复杂性规模 N 的每一个输入的概率也难以预测或确定。我们有时也按平均情况计量时间复杂性,但那是在对P(I)做了一些人为的假设(比如等概率)之后才进行的,所做的假设是否符合实际总是缺乏根据。,四川师范大学 计算机科学学院 刘芳 25,因此在最好情况和平均情况下的时间复杂性分析还仅仅是停留在理论上。实践表明:可操作性最好的且最有实际价值的是最坏情况下的时间复杂性。,四川师范大学 计算机科学学院 刘芳 26,例1:查找算法的时间复杂性分析,问题:已知不重复且已经按从小到大排好的m个整数的数组A1.m(为简单起见,设m=2 k,k是一个
11、确定的非负整数)。对于给定的整数c,要求寻找一个下标j,使得A j=c;若找不到,则返回1。,四川师范大学 计算机科学学院 刘芳 27,顺序查找算法的时间复杂性分析,算法1-1:(顺序查找)int search_sq(int Am+1,int c)int j,result;j=1;while(jm,分析:问题的规模为m,设元运算及执行时间为:赋值:a判断:t加法:s 并设c在A中(即c为合法输入),四川师范大学 计算机科学学院 刘芳 28,顺序查找算法的时间复杂性分析,最好情况int search_sq(int Am+1,int c)int j,result;j=1;a while(jm,最好
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 算法 设计 分析 概述

链接地址:https://www.31ppt.com/p-6342648.html