[2018年最新整理]AlgorithmChapter2.pptVIP

  1. 1、本文档共53页,可阅读全部内容。
  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文档。上传文档
查看更多
[2018年最新整理]AlgorithmChapter2

* * * * * * * * * * * * * * * * * * * * * * * * * * 符号Θ 定义3 对于足够大的n,t(n)的上界和下界由g(n)的常数倍来确定,即: 记为t(n) ∈ Θ(g(n)) c2g(n) ≤ t(n) ≤ c1g(n),c1,c2为常数 n2+3n+2∈Θ (n2) n(n-1)/2∈Θ (n2) 4n2+5 ∈Θ (n2) 【证明】 上界: 下界: 渐进符号的有用特性 定理 如果t1(n) ∈O(g1(n))并且t2(n) ∈O(g2(n)),则 t1(n)+ t2(n) ∈O(max{(g1(n), g2(n)}) 对于符号Ω和Θ,该定理也成立。 该定理表明:当算法由两个连续执行部分组成时,该算法的整体效率由具有较大增长次数的那部分所决定。 性质 4 理解 某些算法由两个以上的部分组成。该算法整体效率由具有最大增长率的部分决定(效率最差)。 例: 数组元素的查找算法(先排序后查找) 对数组元素排序 2. 顺序查找有序数组 T1 (n) = 0.5n(n-1) ∈Θ(n2) T2(n) = n ∈Θ(n) 算法的整体效率:T(n) ∈Θ(n2) 利用极限比较增长次数 前两种情况意味着t(n) ∈ O(g(n)) 后两种情况意味着t(n) ∈ Ω(g(n)) 第二种情况意味着t(n) ∈ Θ(g(n)) 【例】比较 0.5n(n-1) 和 n2 的增长率 或证明:0.5n(n-1)∈Θ(n2) 【例2】 【例3】 基本的效率类型 常量(1)、对数(logn)、线性(n)、nlogn、平方(n2)、立方(n3)、指数(2n)、阶乘(n!) 关于渐进时间效率: 注1 对规模较小的问题,决定算法工作效率的可能是算法的简单性而不是算法执行的时间。 注2 当比较两个算法的效率时,若两个算法是同阶的,必须进一步考察阶的常数因子才能辨别优劣。 非递归算法的数学分析 Example 1:讨论下面这个算法(从n个元素中查找最大元素问题)的效率。 算法 MaxElement(A[0..n-1] //求给定数组中的最大元素 //输入:实数数组A[0..n-1] //输出:A中的最大元素 maxval ?A[0] for i ? 1 to n-1 do if A[i] maxval maxval ? A[i] return maxval 考虑: 循环中的操作有比较和赋值,取哪一个作为基本操作? 输入规模是多少? 基本操作为:比较运算 输入规模就是数组长度n 算法的效率为: 分析非递归算法效率的通用方案 决定用那些参数作为输入规模的度量。 找出算法的基本操作。 检查基本操作的执行次数是否只依赖输入规模。 建立一个算法基本操作执行次数的求和表达式。 利用求和运算的标准公式和法则来建立一个操作次数的闭合公式,或者至少确定它的增长次数。 常用求和公式(更多:教材附录) 【例】检查数组元素是否唯一 算法 UniqueElement ( A[0...n-1] ) for i←0 to n-2 do for j←i+1 to n-1 do if A[ i ] = A[ j ] return false return true 输入规模:元素个数 n 基本操作:最内层循环的 比较 操作(无其他操作) 效率类别:有无最优、最差、平均效率? 观察循环结束条件:若有相等元素,提前结束循环 —— 元素不唯一 最佳效率:开始两个元素相等。 Cbest(n) = 1 最差效率:没有相同元素或最后两个元素相等。这时,完成全部循环 比较次数 = 循环次数。下面分析 最差效率 Cworst(n) 平均效率:其他情况(略) i j 外层 i 循环范围:0 →n – 2 内层 j 循环范围:i + 1 → n - 1 建立增长函数 —— 基本操作次数与输入规模 n 的函数关系 【例】矩阵乘法的时间效率分析 给定两个方阵 A 和 B,根据矩阵乘法定义计算它们之乘积。 算法 MatrixMultiplication (A[0...n-1][0...n-1], B[0...n-1][0...n-1]) for i←0 to n-1 do // 行循环 for j←0 to n-1 do // 列循环 M[ i ][ j ]←0.0 // 积矩阵初始化 for k←0 to n

文档评论(0)

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

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

1亿VIP精品文档

相关文档