第一章算法概述概要.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
算法设计与分析导论 R.C.T.Lee S.S.TsengR.C.Chang著,王卫东译 机械工业出版社 第1章 算法概述 学习要点: 理解算法的概念。 理解什么是程序,程序与算法的区别和内在联系。 掌握算法的计算复杂性概念。 掌握算法渐近复杂性的数学表述。 掌握用java语言描述算法的方法。 算法(Algorithm) 算法是指解决问题的一种方法或一个过程。 算法是若干指令的有穷序列,满足性质: (1)输入:有外部提供的量作为算法的输入。 (2)输出:算法产生至少一个量作为输出。 (3)确定性:组成算法的每条指令是清晰,无歧义的。 (4)有限性:算法中每条指令的执行次数是有限的,执行每条指令的时间也是有限的。 程序(Program) 程序是算法用某种程序设计语言的具体实现。 程序可以不满足算法的性质(4)。 例如操作系统,是一个在无限循环中执行的程序,因而不是一个算法。 操作系统的各种任务可看成是单独的问题,每一个问题由操作系统中的一个子程序通过特定的算法来实现。该子程序得到输出结果后便终止。 问题求解(Problem Solving) 分析算法的一些原则 分析一个算法的优劣,主要考虑以下几个方面的问题: 正确性 也即要求该算法在合理的输入数据下,能在有限的时间中得出正确的结果。分析算法的正确性,一般需要用到有关的数学定理(例如线性代数、图论、组合数学等方面的定理)。对于长的程序,可以将其分成一些小段来分析,只有每个小段都是正确的,才能保证整个程序的正确性。在分析算法的正确性时,数学归纳法是很有用的。 运算工作量 此处并非指的是计算机真正的运算时间,因为这因计算机而异,也不是指需要执行的指令和语句数目,因为这与所用的程序语言和程序员的习惯有关。此处是分析算法本身的特点,我们希望有一个足够准确又足够一般的衡量方法,通常是计算所需的一些基本运算的次数。例如所需的比较次数,所需的加法和乘法次数等。而且通常是对不同的算法进行相对的比较。在分析比较算法时,运算量是一个非常重要的因素。 所占空间量 这也不是具体指真正占多少计算机的内存或外存,因为这同样与所采用的计算机所用的程序语言和程序员惯用的格式有关。此处也是进行相对的比较。如果输入数据有其固有的形式,则我们分析还需要占多少额外的单元。当所需额外存储单元数不随输入数据的规模变化时,我们称这种算法是“就地”进行运算的(例如排序算法中的堆阵排序),对于大型的问题这当然比所需额外单元与输入数据规模大小有关的算法(如合并排序)要优越。应说明,这里所说“存储单元”,并无严格的定义,是因问题而异的。如果输入数据可以表示成不同的形式,例如图就有不同的表示方法,则还需要比较输入数据的不同形式占空间的多少。 简单性 最简单最直接的方法往往不是最有效的方法,例如递归算法虽然简单,但运算工作量较大。但算法的简单性使得证明其正确性比较容易,编写程序、改错和修改程序都比较方便,可以节省人的时间,还是应当强调的。即使如此,对于经常使用的程序来说,算法的效率还是比其简单性更重要。 算法的复杂性 复杂性是指实现和运行一算法所需资源的多少,包括时间复杂性(所需运算时间),空间复杂性(所占存储空间)和人工复杂性(编程改错等所需人工)。我们研究的重点是时间复杂性。 算法的各个复杂性可以用一个变量表示,这个变量就是问题实例的“规模”,用它反映描述该实例所需要输入的数据总量。这样做是方便的,因为预料问题实例的相对难度随着它们的规模而变化。 我们用n作为表示问题规模的量,例如排序问题中n为需要排序的元素的个数;图的问题中n为图的顶点数或边数;矩阵求逆中n为矩阵的阶数等。 算法渐近复杂性 T(n) ?? , as n?? ; (T(n) - t(n) )/ T(n) ?0 ,as n??; t(n)是T(n)的渐近性态,为算法的渐近复杂性。 在数学上, t(n)是T(n)的渐近表达式,是T(n)略去低阶项留下的主项。它比T(n) 简单。 算法渐近复杂性 算法渐近复杂性 算法分析中常见的复杂性函数 最优算法 问题的计算时间下界为?(f(n)),则计算时间复杂性为O(f(n))的算法是最优算法。 例如,排序问题的计算时间下界为?(nlogn),计算时间复杂性为O(nlogn)的排序算法是最优算法。 堆排序算法是最优算法。 课后作业 (1)假设某算法在输入规模为n使得计算时间为T(n)=3*2^n,在某台计算机上实现并完成该算法的时间为t秒。现有令一台计算机,其运行速度为第一台的64倍,那么在这台新机器上用同一算法在t秒内能解输入为多大的问题。 (2)若上述算法的计

文档评论(0)

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

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

1亿VIP精品文档

相关文档