第1章 算法设计和分析.pptVIP

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第一章 算法设计和分析 第一节 概述 一、算法的概念: 算法是解决问题方法的精确描述,是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出 二、算法特性:有穷性、确定性、可行性、有输入、有输出。 1.有穷性:对于任意一组合法输入值,在执行有穷步骤之后一 定能结束,即:算法中的每个步骤都能在有限时间内完成。 2.确定性:对于每种情况下所应执行的操作,在算法中都有确 切的规定,使算法的执行者或阅读者都能明确其含义及如何执 行。并且在任何条件下,算法都只有一条执行路径。 3.可行性:算法中的所有操作都必须足够基本,都可以通过已 经实现的基本操作运算有限次实现之。 4.有输入:作为算法加工对象的量值,通常体现为算法中的一 组变量。有些输入量需要在算法执行过程中输入,而有的算法 表面上可以没有输入,实际上已被嵌入算法之中。 5.有输出:它是一组与“输入”有确定关系的量值,是算法进 行信息加工后得到的结果,这种确定关系即为算法的功能。 三、算法的几个要点: 1.算法的每一个步骤都必须清晰、明确。 2.算法所处理的输入的值域必须仔细定义。 3.同样的一个算法可以用几种不同的形式来描述。 4.可能存在几种解决相同问题的算法。 5.针对同一个问题的算法可能会基于完全不同的解题思路,而且解题的速度也会有明显区别。 Example 求两个正整数m,n的最大公约数gcd(m,n) 1.同一个算法有不同的表达方式: (1) 第一节 概述 2.同一个问题有不同的解决方法: (1)gcd(m,n)的连续整数检测算法 第一步:将min{m,n}的值赋给t。 第二步:m除以t,如果余数为0,则进入第三步;否则, 进入第四步。 第三步:n除以t,如果余数为0 ,则返回t值作为结果; 否则,进入第四步。 第四步:把t的值减1。返回第二步。 (2)gcd(m,n)的中学计算算法 第一步:找到m的所有质因数。 第二步:找到n的所有质因数 第三步:从第一步和第二步中求得的质因数分解式找出所 有的公因数。 第四步:将第三步中找的质因数相乘,其结果作为给定数 字的最大公因数。 算法问题求解的过程: 设计算法前做的第一件事情。 仔细阅读问题的描述 提出疑问 理解问题: 手工处理一些实例 考虑特殊情况 确定输入 抽象出问题,用数学表达式描述 选择精确解和近似解: 某些重要的问题无法求得精确解 某些问题利用精确解速度慢,无法接受 算法设计技术: 使用算法解题的一般性方法,用于解决计算领域的多种问题。 详细表述算法的方法: 自然语言:用我们日常生活中的自然语言(可以是中文形式, 也可以是英文形式)也可以描述算法。 伪代码:我们可以用数学语言或约定的符号语言来描述算法。 流程图:一个算法可以用流程图的方式来描述,输入输出、判 断、处理分别用不同的框图表示,用箭头表示流程的流 向。这是一种描述算法的较好方法,目前在一些高级语 言程序设计中仍然采用。也有其他的图形辅助工具。 证明算法的正确性: 证明对于每一个合法的输入,该算法都会在有限的时间内输 出一个满足要求的结果。 一般方法:数学归纳法 证明算法的正确性与不正确哪一个更容易? 分析算法: 算法有两种效率:时间效率和空间效率。 算法的另外两个特性:简单性和一般性。 为算法写代码: 用计算机程序实现算法。 在把算法转变为程序的过程中,可能会 发生错误或者效率非常低。 作为一种规律,一个好的算法是反复努力和重新修正的结果 算法是一个最优性问题:对于给定的问题需要花费多少力气(资源)? 是不是每个问题都能够用算法的方法来解决? 发明或发现算法是一个非常有创造性和非常值得付出的过程! 算法和程序的关系: (1)算法着重体现思路和方法,程序着重体现计算机的实现。 (2)程序不一定满足有穷性(死循环),另外

文档评论(0)

339910001 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档