计算机算法设计与分析--第1章 算法概述.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算机算法设计与分析--第1章 算法概述

计算机算法设计与分析 Design and Analysis of Computer Algorithms 第一章 算法概述 提纲 一、算法与程序 二、算法复杂性分析 三、用C++语言描述算法的方法 提纲 一、算法与程序 二、算法复杂性分析 三、用C++语言描述算法的方法 1.1 算法的概念 算法是指解决问题的方法和过程。 算法是对特定问题求解步骤的一种描述,包含操作的有限规则和操作的有限序列。   通俗一点讲,算法就是一个解决问题的公式(数学手册上的公式都是经典算法)、规则、思路、方法和步骤。算法可以用自然语言描述,也可以用流程图描述,但最终要用计算机语言编程,上机实现。 算法是若干指令的有穷序列,满足性质: 输入: 有1个或多个满足给定约束条件的量作为算法的输入。 输出: 算法产生至少一个量作为输出。 确定性:组成算法的每条指令是清晰,无歧义的。 有限性:算法中每条指令的执行次数是有限的,执行每条指令的时间也是有限的。 算法要求其执行时间是有限的 (终止性) 。 程序的执行时间可能是无限的。(例操作系统,只要整个系统不遭破坏,它将永远不会停止,即使没有作业需要处理,它仍处于动态等待中。因此,操作系统不是一个算法。 ) 程序 程序是某个算法或过程的在计算机上的一个具体的实现。 程序是依赖于程序设计语言的,甚至依赖于计算机结构的。 算法是脱离具体的计算机结构和程序设计语言的。 算法与程序的区别与联系 (1).一个程序不一定满足有穷性。例操作系统,只要整个系统不遭破坏,它将永远不会停止,即使没有作业需要处理,它仍处于动态等待中。因此,操作系统不是一个算法。 (2).程序中的指令必须是机器可执行的,而算法中的指令则无此限制。 (3).算法代表了对问题的解,而程序则是算法在计算机上的特定的实现。一个算法若用程序设计语言来描述,则它就是一个程序. 人们的生产活动和日常生活离不开算法,都在自觉不自觉地使用算法,例如人们到商店购买物品,会首先确定购买哪些物品,准备好所需的钱,然后确定到哪些商场选购、怎样去商场、行走的路线,若物品的质量好如何处理,对物品不满意又怎样处理,购买物品后做什么等。以上购物的算法是用自然语言描述的,也可以用其他描述方法描述该算法。 对算法的学习包括五个方面的内容:① 设计算法。 ② 表示算法。 ③确认算法。 ④ 分析算法。 ⑤ 验证算法。 ① 设计算法。算法设计工作是不可能完全自动化的,应学习了解已经被实践证明是有用的一些基本的算法设计方法,这些基本的设计方法不仅适用于计算机科学,而且适用于电气工程、运筹学等领域; ② 表示算法。描述算法的方法有多种形式,例如自然语言和算法语言,各自有适用的环境和特点; ③确认算法。算法确认的目的是使人们确信这一算法能够正确无误地工作,即该算法具有可计算性。正确的算法用计算机算法语言描述,构成计算机程序,计算机程序在计算机上运行,得到算法运算的结果; ④ 分析算法。算法分析是对一个算法需要多少计算时间和存储空间作定量的分析。分析算法可以预测这一算法适合在什么样的环境中有效地运行,对解决同一问题的不同算法的有效性作出比较; ⑤ 验证算法。用计算机语言描述的算法是否可计算、有效合理,须对程序进行测试,测试程序的工作由调试和作时空分布图组成。 1.2 问题表示 设Input和Output是两个集合。一个问题是一个关系R?Input?Output,Input称为问题R的输入集合,Input的每个元素称为R的一个输入,Output称为问题R的输出或结果集合,Output的每个元素称为R的一个结果。 一个算法面向一类问题,而不是仅求解问题的一个或几个实例。 1.2 问题表示 例如,排序(SORT)问题定义如下: -Input=?a1,....,an ? ai是实数? -output=?b1,....,bn ? bi是实数,且b1?...?bn? -R=?(a1,...,an,b1,...,bn)?a1,...,an?Input, b1,...,bn?output,?a1,...,an?= ?b1,...,bn?} 1.3 算法示例—插入排序算法 a?0,...,n-1? = 5,2,4,6,1,3 a?0,...,n-1? = 5,2,4,6,1,3 a?0,...,n-1? = 2,5,4,6,1,3 a?0,...,n-1? = 2,4,5,6,1,3 a?0,...,n-1? = 2,4,5,6,1,3 a?0,...,n-1? = 1,2,4,5,6,3 a?0,...,n-1? = 1,2,3,4,5,6 算法描述 1. 从第一个元素开始,该元素可以认为已经被排序   2. 取出下一个元素,在已经排序的元素序列中

文档评论(0)

ctuorn0371 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档