算法设计与分析-第2章-算法分析基础.pptxVIP

算法设计与分析-第2章-算法分析基础.pptx

  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文档。上传文档
查看更多
第2章 算法分析基础;2.1 算法分析的基本概念 ;三、算法分析的两个阶段 ;2.2 算法的渐进分析;语句频度:语句执行的次数 算法的语句频度f(n): f(n)=∑( 语句(i)的执行次数) 算法中基本操作重复执行的次数之和 算法的执行时间:是所有语句的执行时间之和 T(n)=∑( 语句(i)的执行次数×语句的执行时间 ) (假设每条语句执行的时间相等);2.2 算法的渐进分析;大O符号描述增长率的上限,表示T(n)的增长最多像f(n)增长的那样快 当说一个算法具有O(f(n))的计算时间时,指的是如果此算法用n值不变的同一类数据在某台机器上运行时,所用的时间总是小于f(n)的一个常数倍。所以f(n)是计算时间T(n)的一个上界函数,T(n)的数量级就是f(n);算术运算: O(f(n))+O(g(n)) = O(max{f(n),g(n)}) ; O(f(m))+O(g(n)) = O(f(m)+g(n)) ; O(f(n))*O(g(n)) = O(f(n)*g(n)) ; O(cf(n)) = O(f(n)) ; 若g(n)= O(f(n)) 则 O(f(n))+O(g(n)) = O(f(n)) 。;证明:取n0=1,当n=n0时,利用T(n)的定义和一个简单的不等式,有 取c=|am|+….+|a0| 定理得证. 事实上,只要将n0取得足够大,可以证明只要c是比|am|大的任意一个常数,此定理都成立。;2.2 算法的渐进分析;;2.2 算法的渐进分析;例.1)假设某算法在输入规模是 时为 .在某台计算机上实现并完成该算法的时间是 秒. 现有另一台计算机,其运行速度为第一台的64倍, 那么,在这台计算机上用同一算法在 秒内能解决规模为多大的问题?;由于此时 ,新机器的运行速度/每语句为:;2. 大Ω符号--运行时间的下界 ;大Ω符号用来描述增长率的下界 也就是说, T(n)=Ω(g(n))是当输入规模为n时,算法消耗时间的最小值。 与大O符号对称,这个下限的阶越高,结果就越有价值。 问题的计算时间下界为?(f(n)),则计算时间复杂性为O(f(n))的算法是最优算法。 例如:计算时间复杂性为O(nlogn)的排序算法是最优算法。(堆排序算法就是最优算法)。;3. Θ符号---运行时间的准确界 ;例: T(n)=5n2+8n+1 当n≥1时,5n2+8n+1≤5n2+8n+n =5n2+9n≤5n2+9n2≤14n2=O(n2) 当n≥1时,5n2+8n+1≥5n2=Ω(n2) ∴ 当n≥1时,14n2≥5n2+8n+1≥5n2 则:5n2+8n+1=Θ(n2);【解答】 当n≥1时,3n-1≤3n=O(n) 当n≥1时,3n-1≥3n-n=2n=Ω(n) 当n≥1时,3n≥3n-1≥2n,则3n-1=Θ(n);2.3 最好、最坏和平均情况 ;(1)最坏情况下的时间复杂性 Tmax(n) = max{ T(I) | size(I)=n } (2)最好情况下的时间复杂性 Tmin(n) = min{ T(I) | size(I)=n } (3)平均情况下的时间复杂性 Tavg(n) = 其中I是问题的规模为n的实例,p(I)是实例I出现的概率。;2.3 最好、最坏和平均情况 ;最好情况:出现概率较大时分析 最差情况:实时系统 平均情况:已知输入数据是如何分布的, 通常假设等概率分布;1. 建立一个代表算法运行时间的求和表达式; 2. 用渐进符号表示这个求和表达式。;1. 决定用哪个(或哪些)参数作为算法问题规模的度量 可以从问题的描述中得到。 2. 找出算法中的基本语句 通常是最内层循环的循环体。 3. 检查基本语句的执行次数是否只依赖于问题规模 如果基本语句的执行次数还依赖于其他一些特性,则需要分别研究最好情况、最坏情况和平均情况的效率。 4. 建立基本语句执行次数的求和表达式 计算基本语句执行的次数,建立一个代表算法运行时间的求和表达式。 5. 用渐进符号表示这个求和表达式 计算基本语句执行次数的数量级,用大O或Ω或Θ???号描述算法增长率的上限。;2.5 递归算法的分析 ;例: Merge-sort排序算法的复杂性递归方程为 T(n)=?(1) if n=1 T(n)=2T(n/2)+?(n) if n1;步骤: 循环地

文档评论(0)

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

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

1亿VIP精品文档

相关文档