大学计算机基础-04-算法分析与设课件.ppt
《大学计算机基础-04-算法分析与设课件.ppt》由会员分享,可在线阅读,更多相关《大学计算机基础-04-算法分析与设课件.ppt(46页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4 4章章 算法分析与设计算法分析与设计4.1算法的基本概念算法的基本概念4.2算法策略算法策略4.3基本算法基本算法4.1 4.1 算法算法的基本概念的基本概念4.1.1算法定义与性质算法定义与性质 人们使用计算机,就是要利用计算机处理各种不同的问题,而要做到这一点,人们就必须事先对各类问题进行分析,确定解决问题的具体方法和步骤,再编制好一组让计算机执行的指令,即程序,交给计算机,让计算机按人们指定的步骤有效地工作。这些让计算机工作的具体方法和步骤,其实就是解决一个问题的算法。算法是一组明确步骤地有序集合,它产生结果并在有限时间内终止。4.1 4.1 算法算法的基本概念的基本概念一个算法
2、必须具备以下性质:确定性。算法中每一个步骤都必须是确切定义的,不能产生二义性。可行性。算法必须是由一系列具体步骤组成的,并且每一步都能被计算机所理解和执行。有穷性。一个算法必须在执行有穷步后结束,每一步必须在有穷的时间内完成。输入。一个算法可以有零个或多个输入,这取决于算法要实现的功能。输出。一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的。4.1 4.1 算法算法的基本概念的基本概念对算法的学习包括5个方面的内容:设计算法表示算法确认算法分析算法验证算法4.1 4.1 算法算法的基本概念的基本概念4.1.2设计算法原则和过程设计算法原则和过程 对于一个特定问
3、题的算法在大部分情况下都不是唯一的。也就是说,同一个问题,可以有多种解决问题的算法,而对于特定的问题、特定的约束条件,相对好的算法还是存在的。因此,在特定问题、特定的条件下,选择合适的算法,会对解决问题有很大帮助;否则前人的智慧我们不能借鉴,凡事就都得自己从头研究了,这就是所谓的要去“发明轮子(Invent the wheel)”。4.1 4.1 算法算法的基本概念的基本概念在设计算法时,通常应考虑以下原则:(1)正确性 算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性、能正确反映问题的需求、能够得到问题的正确答案。算法的“正确”通常在用法上有很大的差别,大体分为四个层次。算法程序
4、没有语法错误。算法程序能够根据正确的输入的值得到满足要求的输出结果。算法程序能够根据错误的输入的值得到满足规格说明的输出结果。算法程序对于精心设计的、极其刁难的测试数据都能满足要求的输出结果。4.1 4.1 算法算法的基本概念的基本概念 对于这四层含义,第层次要求最低,因为仅仅没有语法错误实在谈不上是好算法。而第层次是最困难的,我们几乎不可能逐一验证所有的输入都得到正确的结果。因此,算法的正确性在大部分情况下都不可能用程序来证明,而是用数学方法证明的。证明一个复杂算法在所有层次上都是正确的,代价非常昂贵。所以一般情况下,我们把层次作为一个算法是否正确的标准。4.1 4.1 算法算法的基本概念的
5、基本概念(2)可读性 设计算法的目的,一方面是为了让计算机执行,但还有一个重要的目的是为了便于他人阅读,让人理解和交流,自己将来也可能阅读。如果可读性不好,时间长了自己都不知道写了些什么。可读性是评判算法(也包括实现它的程序代码)好坏很重要的标志。可读性不好不仅无助于人们理解算法,晦涩难懂的算法往往隐含错误,不易被发现并且难于调试和修改。4.1 4.1 算法算法的基本概念的基本概念(3)健壮性 当输入的数据非法时,算法应当恰当地做出反应或进行相应处理,而不是产生莫名其妙的输出结果。并且处理出错的方法不应是中断程序的执行,而应是返回一个表示错误或错误性质的值,以便在更高的抽象层次上进行处理.(4
6、)高效率与低存储量 通常,算法的效率指的是算法的执行时间;算法的存储量指的是算法执行过程中所需的最大存储空间,两者的复杂度都与问题的规模有关。算法分析的任务是对设计出的每一个具体的算法,利用数学工具,讨论其复杂度,探讨具体算法对问题的适应性。4.1 4.1 算法算法的基本概念的基本概念4.1.3算法的基本表达算法的基本表达 算法是对问题求解过程的清晰表述,通常可以采用自然语言、流程图、伪代码等多种不同的方法来描述,目的是要清晰地展示问题求解的基本思想和具体步骤。(1)算法的自然语言描述 自然语言就是人们日常使用的语言,可以使用汉语、英语或其他语言等。用自然语言表示通俗易懂,但文字冗长,表示的含
7、义往往不太严格,要根据上下文才能判断其正确含义,容易出现歧义性。此外,用自然语言来描述包含分支和循环的算法,不很方便,因此除了那些简单的问题以外,一般不用自然语言描述算法。4.1 4.1 算法算法的基本概念的基本概念(2)算法的流程图描述 流程图使用一些图框来表示各种操作。用流程图来描述问题的解题步骤,可使算法十分明确、具体直观、易于理解。美国国家标准化协会ANSI(American National Standard Institute)规定了一些常用的流程图符号。流程图将解决问题的详细步骤用特定的图形符号表示,中间再画线连接以表示处理的流程,流程图比文字方式更能直观地说明解决问题的步骤,可
8、使人快速准确地理解并解决问题。4.1 4.1 算法算法的基本概念的基本概念 用流程图表示算法直观形象,比较清楚地显示出各个框之间的逻辑关系。但这种流程图占用篇幅较多,尤其当算法比较复杂时,画流程图既费时又不方便。在结构化程序设计方法推广之后,经常采用N-S结构化流程图代替传统的流程图。N-S流程图是一种适于结构化程序设计的流程图。在N-S流程图中,完全去掉了带箭头的流程线,全部算法写在一个矩形框内,在该框内可以包含其它从属于它的框,或者说,由一些基本的框组成一个大的框。4.1 4.1 算法算法的基本概念的基本概念(3)算法的伪代码描述 用传统的流程图和N-S流程图表示算法直观易懂,但画起来都比
9、较费事。在设计一个算法过程中,因为涉及到需要对算法反复修改,所以用流程图表示算法不是很理想(每修改一次算法,就要重新画流程图)。为了设计算法时的方便,常用一种称为伪代码的工具。伪代码是用介于自然语言和程序设计语言之间的文字和符号来描述算法。伪代码不使用图形,在书写上方便,格式紧凑,比较好懂,不仅适宜设计算法过程,也便于向计算机语言算法(即程序)过渡。4.1 4.1 算法算法的基本概念的基本概念(4)用计算机语言表示算法 设计算法的目的是为了实现算法。因为是用计算机解题,也就是要用计算机实现算法,因此在用流程图或伪代码描述一个算法后,还要将它转换成计算机语言编写的程序才能被计算机执行。用计算机语
10、言表示的算法是计算机能够执行的算法。用计算机语言表示算法必须严格遵循所用的语言的语法规则,这是和伪代码不同的。4.2 4.2 算法策略算法策略 算法策略就是在问题空间中随机搜索所有可能的解决问题的方法,直至选择一种有效的方法解决问题。所有算法策略的中心思想就是用算法的基本工具(循环机制和递归机制)实现算法。按照问题求解策略来分,算法有枚举法、递归法、回溯法、分治法等。4.1 4.1 算法算法的基本概念的基本概念4.2.1枚举法枚举法 枚举法也叫穷举法、列举法、蛮力法,它既是一个策略,也是一个算法,也是一个分析问题的手段。枚举法算法的实现依赖于循环,通过循环嵌套,枚举问题中各种可能的情况。枚举法
11、的求解思路很简单,就是对所有可能的解逐一尝试,从而找出问题的真正解。这就要求所求解的问题可能有的解是有限的、固定的、容易枚举的、不会产生组合爆炸的。枚举法的解题思路常常直接基于问题的描述,所以它是一种简单而直接地问题求解的方法,多用于决策类问题,这类问题都不易进行问题的分解,只能整体来求解。4.1 4.1 算法算法的基本概念的基本概念 枚举法的基本思想是依题目的部分条件确定答案的大致范围,在此范围内对所有可能的情况逐一验证,直到全部情况验证完。若某个情况经过验证符合题目的全部条件,则为本题的一个答案。若全部情况经过验证后都不符合题目的全部条件,则本题无解。用枚举法解题时,答案所在范围总要求是有
12、限的,关键是怎样才能不重复、一个不漏、一个不增地逐个列举答案所在范围的所有情况。由于计算机的运算速度快,擅长重复操作,很容易完成大量的枚举。枚举法是计算机算法中的一个基础算法,所设计出来的算法其时间性能往往是最低的。4.1 4.1 算法算法的基本概念的基本概念 枚举法的基本思想是依题目的部分条件确定答案的大致范围,在此范围内对所有可能的情况逐一验证,直到全部情况验证完。若某个情况经过验证符合题目的全部条件,则为本题的一个答案。若全部情况经过验证后都不符合题目的全部条件,则本题无解。用枚举法解题时,答案所在范围总要求是有限的,关键是怎样才能不重复、一个不漏、一个不增地逐个列举答案所在范围的所有情
13、况。由于计算机的运算速度快,擅长重复操作,很容易完成大量的枚举。4.1 4.1 算法算法的基本概念的基本概念4.2.2递归法递归法 直接或间接地调用自身的算法称为递归算法。递归 法是利用大问题与其子问题间的递归关系来解决问题的。能采用递归描述的算法通常有这样的特征:为了求解规模为N的问题,设法将它分解成规模较小的问题,然后从这些小问题的解很方便地构造出大问题的解,并且这些规模较小的问题也能采用同样的分解和综合方法,分解成规模更小的问题,并从这些更小问题的解构造出规模较大问题的解。特别地,当规模N=1时,能直接得解。4.1 4.1 算法算法的基本概念的基本概念4.2.3分治法分治法 分治法的基本
14、思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同,求出子问题的解,就可得到原问题的解。在设计上,就是将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。当K=2时的分治法又称二分法。4.2.24.2.2递归法递归法直接或间接地调用自身的算法称为递归算法。递归法是利用大问题与其子问题间的递归关系来解决问题的。能采用递归描述的算法通常有这样的特征:为了求解规模为N的问题,设法将它分解成规模较小的问题,然后从这些小问题的解很方便地构造出大问题的解,并且这些规模较小的问题也能采用同样的分解和综合方法,分解成规模更小的问题,并从这些
15、更小问题的解构造出规模较大问题的解。特别地,当规模N=1时,能直接得解。4.1 4.1 算法算法的基本概念的基本概念利用分治法求解的问题,应同时满足以下4个要求:(1)原问题在规模缩小到一定程度时可以很容易地求解(2)原问题可以分解为若干个规模较小的同构子问题(3)各子问题的解可以合并为原问题的解(4)原问题所分解出的各个子问题之间是相互独立的4.2.24.2.2递归法递归法直接或间接地调用自身的算法称为递归算法。递归法是利用大问题与其子问题间的递归关系来解决问题的。能采用递归描述的算法通常有这样的特征:为了求解规模为N的问题,设法将它分解成规模较小的问题,然后从这些小问题的解很方便地构造出大
16、问题的解,并且这些规模较小的问题也能采用同样的分解和综合方法,分解成规模更小的问题,并从这些更小问题的解构造出规模较大问题的解。特别地,当规模N=1时,能直接得解。4.1 4.1 算法算法的基本概念的基本概念利用分治法求解问题的算法通常包含以下几个步骤:(1)分解 将原问题分解为若干个相互独立、规模小且与原问题形式相同的一系列子问题,最好使各子问题的规模大致相同。(2)解决 如果子问题规模小到可以直接被解决则直接求解,否则需要递归地求解各个子问题。(3)合并 将各个子问题的结果合并成原问题的解。有些问题的合并方法比较明显,有些问题的合并方法比较复杂,或者存在多种合并方案;也有些问题的合并方案不
17、明显。究竟应该怎样合并,没有统一的模式,需要具体问题具体分析。4.2.24.2.2递归法递归法直接或间接地调用自身的算法称为递归算法。递归法是利用大问题与其子问题间的递归关系来解决问题的。能采用递归描述的算法通常有这样的特征:为了求解规模为N的问题,设法将它分解成规模较小的问题,然后从这些小问题的解很方便地构造出大问题的解,并且这些规模较小的问题也能采用同样的分解和综合方法,分解成规模更小的问题,并从这些更小问题的解构造出规模较大问题的解。特别地,当规模N=1时,能直接得解。4.1 4.1 算法算法的基本概念的基本概念分治策略的解题思路:if(问题不可分)直接求解;返回问题的解;Else 对原
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学计算机 基础 04 算法 分析 课件
限制150内