算法与复杂性-第2讲算法分析基础.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例 2-7 f ( n ) = 2 n + 3 = ? ( n ) ,即 2 n + 3 ?? ( n ) 。 例 2-8 f ( n ) = 10 n 2 + 4 n + 2 = ? ( n 2 ) 。 定理 2-4 如果 f ( n ) = a m n m + a m ? 1 n m ? 1 + … + a 1 n + a 0 是 m 次多项式,且 a m > 0 ,则 f ( n ) = ? ( n m ) 。 31 2.2.4 小 o 记号(非紧上界) ? 定义 2-4 f ( n ) = o( g ( n )) 当且仅当 f ( n ) = O ( g ( n )) 且 f ( n ) ? ? ( g ( n )) ? 例 2-9 f ( n )=2 n +3=o( n 2 ) ,即 2 n +3 ? o( n 2 ) 。 32 渐近记号包括: ? (1) Θ :紧确界。 相当于 = ? (2)O :上界。 相当于 = ? (3)o :非紧的上界。 相当于 ? (4) Ω :下界。 相当于 = ? (5) ω :非紧的下界。 相当于 33 2.2.5 算法按时间复杂度分类 ? 算法按计算时间分类 凡渐近时间复杂度有多项式时间限界的算法 称做 多项式时间算法 ( polynomial time algorithm ),而渐近时间复杂度为指数函数 限界的算法称做 指数时间算法 ( exponential time algorithm )。 34 最常见的多项式时间算法的渐近时间复杂度 O(1) < O(log n ) < O( n ) < O( n log n ) < O( n 2 ) < O( n 3 ) 最常见的指数时间算法的渐近时间复杂度 O(2 n ) < O( n ! ) < O( n n ) 35 36 ? 提高计算机速度,可以较大幅度 地增加具有线性或 n log n 时间算法 所能处理的问题的能力,但对指 数时间算法的收效甚微。 ? 为提高程序运行速度,选择一种 更快的算法比换一台更快的机器 奏效。 37 算法分析的基本法则 非递归算法: ( 1 ) for / while 循环 循环体内计算时间 * 循环次数; ( 2 )嵌套循环 循环体内计算时间 * 所有循环次数; ( 3 )顺序语句 各语句计算时间相加; ( 4 ) if-else 语句 if 语句计算时间和 else 语句计算时间的较大者。 38 最优算法 ? 问题的计算时间下界为 ? ( f ( n )) ,则计算时间复杂 性为 O ( f ( n )) 的算法是最优算法。 ? 例如,排序问题的计算时间下界为 ? ( n log n ) ,计 算时间复杂性为 O ( n log n ) 的排序算法是最优算法。 ? 堆排序 、 快速排序 、 归并排序 算法是 最优算法。 39 递归算法复杂性分析 int factorial (int n) { if (n == 0) return 1; else return n*factorial(n-1); } ? 2 n ? 0 T ( n ) ? ? T ( n ) ? 2 n ? 2 ? T ( n ? 1 ) ? 2 n ? 0 递推关系常用来分析递归算法。 40 2.3 递推关系 41 第 2 章 算法分析基础 1 2.1 算法复杂度 2.2 渐近表示法 2.3 递推关系 *2.4 分摊分析 2 2.1 算法复杂度 3 2.1.1 什么是好的算法 ? 一个好的算法应具有以下 4 个重要特性 : 正确性 ( correctness ):算法的执行结果 应当满足预先规定的功能和性能要求。 简明性 ( simplicity ):算法应 思路清晰、层次分明、容易理解、 利于编码和调试。 4 效率 ( efficiency ):算法应有效使用存 储空间,并具有高的时间效率。 最优性 ( optimality ):算法的执行时间 已达到求解该类问题所需时间的下界。 程序健壮性 是指当输入不合法数据 时,程序应能

文档评论(0)

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

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

版权声明书
用户编号:8140007116000003

1亿VIP精品文档

相关文档