算法效率的度量.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文档。上传文档
查看更多
算法效率的度量

第一章:绪论 第1章 绪 论 1.1 什么是数据结构 1.2 基本概念和术语 1.3 抽象数据类型的表示和实现 1.4 算法和算法分析 * 第一章:绪论 1.4 算法和算法分析 * 1.4 算法和算法分析 程序设计的实质:好算法+好结构 算法是对特定问题求解步骤的一种描述,它是指令的有限序列,是一系列输入转换为输出的计算步骤。 D.E.Knuth 算法是一个有穷规则的集合,其中之规则规定了一个解决某一特定类型的问题的运算序列。此外,其具有如下五个重要特性 有穷性 确定性 输入 输出 能行性 《计算机程序设计艺术》 1.4 算法和算法分析 * 正确性 原则上应该证明算法对于任意合理的输入都正确 实际中常用推理法证明 时间代价(时间复杂度) 必须抛弃的评价指标 算法运行的实际执行时间 运行过程中所执行的指令条数 运行过程中程序循环的次数 空间代价 (空间复杂度) 需要使用或开辟多少额外的空间 最优性 算法效率的评价标准 1.4 算法和算法分析 * 算法效率的度量 一个高级语言程序的运行时间取决下列因素: 算法策略 问题规模 书写程序的语言 编译程序所产生的机器代码的质量 机器执行指令的速度 程序执行时间的二种常用度量方法 事后统计方法 事前分析估算法 1.4 算法和算法分析 * 算法效率的度量 从算法中选取对于所研究的问题(或算法类型)来说是基本运算的原操作,其重复执行次数和算法的执行时间成正比。 求出该算法执行原操作用的次数(频度),并以此作为算法的时间量度 撇开有关执行平台的硬软件因素(如计算机速度、编译程序等),算法是由控制结构和原操作组成 。 1.4 算法和算法分析 * 算法效率的度量 当问题规模以某种单位由1增至n时,对应算法所耗费的时间也以某种单位由f(1)增至f(n),这时,我们称该算法的时间代价 f(n) 。时间单位则是称之为基本操作的原操作。 多数情况下,以最深层循环内的原操作作为基本操作。 事前估计法并不要求精确求出f(n) ,而要求给出能反应基本操作的执行次数随问题规模的增长速率的某个近似函数:T(n)=O(f(n)) 称O(f(n))为近似时间复杂度,简称时间复杂度。 * 算法效率的度量 渐进符号“大O”的定义: 当且仅当存在一个正的常数 C,使得对所有的 n ? n0 ,有 f(n) ? Cg(n),则 f(n) = O(g(n)) 100n+6=O(n) /* 100n+6?101n for n?10 */ 10n2+4n+2=O(n2) /* 10n2+4n+2?11n2 for n?5 */ 6*2n+n2=O(2n) /* 6*2n+n2 ?7*2n for n?4 */ 1.4 算法和算法分析 * 如果解决问题P的算法A和算法B,其时间复杂度分别是TA(n)和TB(n),则判断A、B性能优劣的标准是查看在n足够大时TA(n)和TB(n)的大小关系 算法效率的度量 1.4 算法和算法分析 * 为什么采用O(f(n))而不采用f(n) ? 更简结地表达算法的间时复杂性的“量级”。 有些复杂的算法难以精确求出f(n) 。 算法效率的度量 算法的空间复杂度 S(n) = O(f(n)) 算法的空间需求以下二个组成部分: 算法程序和输入数据。 辅助空间(工作空间),又称额外空间。 1.4 算法和算法分析 * 算法效率的度量 对于同一算法,如果有相同的问题长度,但采用不同的输入,其时间代价一般也不同。因此在实际的算法分析中,复杂度函数值T(n)不是唯一的 设Dn为问题P的所有长度为n的实例集合,输入实例I∈Dn,t(I)是用来解决问题P的算法A在以I为输入时的执行代价(基本操作数),则算法A的最坏情形时间复杂度和最好情形时间复杂度定义如下 最坏情况和最好情况 1.4 算法和算法分析 * 算法效率的度量(教材约定) 用同一个算法处理两个规模相同的问题,所花费的时间和空间代价也不一定相同。 要全面分析一个算法,应该考虑它在最坏情况下的代价(对同样规模的问题所花费的最大代价)、最好情况下的代价和平均情况下的代价等。 然而要全面准确地分析每个算法是相当困难的,因此本书中在分析算法的性质时将主要考虑它们在最坏情况下的代价,个别地方也涉及到其他情况。 1.4 算法和算法分析 * 算法分析示例 例: 以下为交换a和b的内容的算法,试分析其 T(n)。 temp = a a = b b = temp 分析:基本运算:赋值操作。 因为 执行上述语句仅需常数时间, 所以 T(n)=O(1)。 1.4 算法和算法分析 * 算法分析示例 例: 分析以下算法的T

文档评论(0)

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

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

1亿VIP精品文档

相关文档