第1章-算法概述.ppt
《第1章-算法概述.ppt》由会员分享,可在线阅读,更多相关《第1章-算法概述.ppt(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、关于本课程l课程目的:计算机算法设计与分析导引以算法设计为主,介绍算法设计的主要方法和基本思以算法设计为主,介绍算法设计的主要方法和基本思想;并简要介绍算法分析概念想;并简要介绍算法分析概念不是程序设计课,也不是数学课不是程序设计课,也不是数学课l授课形式:上课+作业/实验+期末考试l参考资料:Web资源 ,图书资源 ,1第1章 算法概述l本章知识要点:1.1 算法与程序1.2 算法与数据结构1.3 表达算法的抽象机制1.4 描述算法与算法设计1.5 算法分析的基本原则1.6 算法复杂性分析C+程序语言描述算法l计划授课时间:4课时21.1 算法与程序l算法:是满足下述性质的指令序列。输入输入
2、:有零个或多个外部量作为算法的输入。输出输出:算法产生至少一个量作为输出。确定性确定性:组成算法的每条指令清晰、无歧义。有限性有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限。l程序:程序是算法用某种程序设计语言的具体实现。程序可以不满足算法的性质程序可以不满足算法的性质(4)即有限性。即有限性。例如操作系统,是一个在无限循环中执行的程序,因而不是一个算法。操作系统的各种任务可看成是单独的问题,每一个问题由操作系统中的一个子程序通过特定的算法来实现。该子程序得到输出结果后便终止。31.2 算法与数据结构l描述算法可以有多种方式自然语言方式、表格方式、图示形式等本书将采用C+与自然
3、语言与自然语言相结合的方式l算法与数据结构的关系不了解施加于数据上的算法就无法决定如何构造数据,可以说算法是数据结构的灵魂;反之算法的结构和选择又常常在很大程度上依赖于数据结构,数据结构则是算法的基础。l算法数据结构程序算法数据结构程序41.3 表达算法的抽象机制1.从机器语言到高级语言的抽象高级程序设计语言的主要好处是:1)高级语言更接近算法语言,易学、易掌握易学、易掌握,一般工程技术人员只需 要几周时间的培训就可以胜任程序员的工作;2)高级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可可读性好,可维护性强,可靠性高靠性高;3)高级语言不依赖于机器语
4、言,与具体的计算机硬件关系不大,因而所写出来的程序可植性好、重用率高可植性好、重用率高;4)把繁杂琐碎的事务交给编译程序,所以自动化程度高,开发周期短开发周期短,程序员可以集中时间和精力从事更重要的创造性劳动,提高程序质量。51.3 表达算法的抽象机制2.抽象数据类型抽象数据类型是算法的一个数据模型连同定义在该模型上并作为算法构件的一组运算。抽象数据类型带给算法设计的好处有:1)算法顶层设计与底层实现分离顶层设计与底层实现分离;2)算法设计与数据结构设计隔开,允许数据结构自由选择;3)数据模型和该模型上的运算统一在ADT中,便于空间和时间耗费的折衷;4)用抽象数据类型表述的算法具有很好的可维护
5、性可维护性;5)算法自然呈现模块化模块化;6)为自顶向下逐步求精自顶向下逐步求精和模块化模块化提供有效途径和工具;7)算法结构清晰结构清晰,层次分明层次分明,便于算法正确性的证明正确性的证明和复复杂性的分析杂性的分析。61.4 描述算法与算法设计l描述算法可以有多种方式,如自然语言方式、图形表格方式等。在这里,我们将采用C+语言语言来描述算法。C+语言的优点是类型丰富、语句精炼,具有面向对象面向对象和面向过程面向过程的双重优点。用C+来描述算法可使整个算法结构紧凑、可读性强。在课程中,有时为了更好地阐明算法的思路,我们还采用C+与自然语言相结合的方式来描述算法。算法设计方法主要有:分治策略、动
6、态规划、贪心算法、回溯法、分支限界、概率算法等,我们将在后面的章节中陆续介绍。71.4 描述算法与算法设计l问题求解(Problem Solving)证明正确性分析算法设计程序理解问题精确解或近似解选择数据结构算法设计策略设计算法81.5 算法分析的基本原则1.正确性正确性定义:在给定有效输入后,算法经过有限时间的计算并产生正确的答案,就称算法是正确的。正确性证明的内容:l方法的方法的正确性证明算法思路的正确性。证明一系列与算法的工作对象有关的引理、定理以及公式。l程序的程序的正确性证明证明所给出的一系列指令确实做了所要求的工作。程序正确性证明的方法:l大型程序的正确性证明可以将它分解为小的相
7、互独立的互不相交的模块,分别验证。l小模块程序可以使用以下方法验证:数学归纳法、软件形式方法等。91.5 算法分析的基本原则2.工作量工作量时间复杂性分析计量工作量的标准:对于给定问题,该算法所执行的基本运算的次数。基本运算的选择:根据问题选择适当的基本运算。问题基本运算在表中查找x比较实矩阵相乘实数乘法排序比较遍历二叉树置指针101.5 算法分析的基本原则3.占用空间占用空间空间复杂性分析两种占用:l存储程序和输入数据的空间l存储中间结果或操作单元所占用空间额外空间影响空间的主要因素:l存储程序的空间一般是常数(和输入规模无关)l输入数据空间为输入规模O(n)空间复杂性考虑的是额外空间的大小
8、如果额外空间相对于输入规模是常数,称为原地工作的算法。111.5 算法分析的基本原则4.简单性简单性含义:算法简单,程序结构简单。好处:l容易验证正确性l便于程序调试简单的算法效率不一定高。要在保证一定效率的前提下力求得到简单的算法。3n+1问题问题While(n1)if(odd(n)n=3n+1;else n=n/2;在最坏情况下,该算法的计算时间下界为(logn).但其计算时间上界至今未知。即该算法是否在有限时间内结束?日本学者米田信夫验证了1013内的自然数。这就是Collatz猜想。121.5 算法分析的基本原则5.最优性最优性含义:指求解某类问题中效率最高的算法 两种最优性l最坏情况
9、最坏情况:设A是解某个问题的算法,如果在解这个问题的算法类中没有其它算法在最坏情况下的时间复杂性比A在最坏情况下的时间复杂性低,则称A是解这个问题在最坏情况下的最优算法。l平均情况平均情况:设A是解某个问题的算法,如果在解这个问题的算法类中没有其它算法在平均情况下的时间复杂性比A在平均情况下的时间复杂性低,则称A是解这个问题在平均情况下的最优算法。寻找最优算法的途径(以最坏情况下的最优性为例)l设计算法A,求W(n)。相当于对问题给出最坏情况下的一个上界。l寻找函数F(n),使得对任何算法都存在一个规模为n的输入并且该算法在这个输入下至少要做F(n)次基本运算。相当于对问题给出最坏情况下所需基
10、本运算次数的一个下界。l如果W(n)=F(n),则A是最优的。l如果W(n)F(n),A不是最优的或者F(n)的下界过低。改进A或设计新算法A使得W(n)F(n)。重复以上两步,最终得到W(n)=F(n)为止。131.5 算法分析的基本原则例:在n个不同的数中找最大的数。基本运算:比较算法:Find Max输入:数组L,项数 n 1 1输出:L中的最大项MAX1)MAXL(1);i2;2)while in do3)if MAX0,存在正数和n0 0使得对所有n n0有:0 f(n)0,存在正数和n0 0使得对所有n n0有:0 cg(n)f(n)l等价于 f(n)/g(n),as n。lf(n
11、)(g(n)g(n)o(f(n)23l(5)紧渐近界记号紧渐近界记号 l(g(n)=f(n)|存在正常数c1,c2和n0使得对所有n n0有:c1g(n)f(n)c2g(n)l 定理定理1:(g(n)=O(g(n)(g(n)24渐近分析记号在等式和不等式中的意义渐近分析记号在等式和不等式中的意义lf(n)=(g(n)的确切意义是:f(n)(g(n)。l一般情况下,等式和不等式中的渐近记号(g(n)表示(g(n)中的某个函数。l例如:2n2+3n+1=2n2+(n)表示l 2n2+3n+1=2n2+f(n),其中f(n)是(n)中某个函数。l等式和不等式中渐近记号O,o,和的意义是类似的。25渐
12、近分析中函数比较渐近分析中函数比较lf(n)=O(g(n)a b;lf(n)=(g(n)a b;lf(n)=(g(n)a=b;lf(n)=o(g(n)a b.26渐近分析记号的若干性质渐近分析记号的若干性质l(1)传递性:)传递性:lf(n)=(g(n),g(n)=(h(n)f(n)=(h(n);lf(n)=O(g(n),g(n)=O(h(n)f(n)=O(h(n);lf(n)=(g(n),g(n)=(h(n)f(n)=(h(n);lf(n)=o(g(n),g(n)=o(h(n)f(n)=o(h(n);lf(n)=(g(n),g(n)=(h(n)f(n)=(h(n);27l(2)反身性:)反身
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 概述
限制150内