- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2章 算法分析基础2.1 算法分析的基本概念2.2 算法的渐进分析2.3 最好、最坏和平均情况2.4 非递归算法的分析2.5 递归算法的分析2.1 算法分析的基本概念 一、算法分析(Algorithm Analysis):对算法所需要的两种计算机资源——时间和空间进行估算 时间复杂性(Time Complexity) 空间复杂性(Space Complexity)二、算法分析的目的: 设计算法——设计出复杂性尽可能低的算法 选择算法——在多种算法中选择其中复杂性最低者2.1 算法分析的基本概念 三、算法分析的两个阶段 1、事前分析—求出该算法的一个时间限界函数。2、事后测试—收集此算法的执行时间和实际占用空间的统计资料。 2.2 算法的渐进分析一、相关概念算法的渐进分析 是一种事前估算的方法,是指忽略具体机器、编程语言和编译器的影响,只关注在输入规模增大时算法运行时间的增长趋势。渐进时间复杂性 当问题的规模n趋向无穷大时,影响算法效率的重要因素是T(n)的数量级,而其他因素仅是使时间复杂度相差常数倍,因此,可以用T(n)的数量级(阶)评价算法。时间复杂度T(n)的数量级(阶)称为渐进时间复杂性。 确定一个算法时间的数量级是十分重要的,它在本质上反映了一个算法所需要的计算时间。2.2 算法的渐进分析语句频度:语句执行的次数算法的语句频度f(n): f(n)=∑( 语句(i)的执行次数)算法中基本操作重复执行的次数之和算法的执行时间:是所有语句的执行时间之和 T(n)=∑( 语句(i)的执行次数×语句的执行时间 ) (假设每条语句执行的时间相等)渐进时间复杂度表示: 随着问题规模 n 的增长,算法执行时间的增长率和算法的语句频度f(n)的增长率相同,则可记作: T(n)= O(f(n)) 称 T(n)为算法的(渐近)时间复杂度c×f(n)执行次数T(n)n0之前的情况无关紧要n0问题规模n2.2 算法的渐进分析二、表示方法 1. 大O符号--运行时间的上界定义1.1 若存在两个正的常数c和n0,对于任意n≥n0,都有T(n)≤c×f(n),则称T(n)=O(f(n))2.2 算法的渐进分析大O符号描述增长率的上限,表示T(n)的增长最多像f(n)增长的那样快当说一个算法具有O(f(n))的计算时间时,指的是如果此算法用n值不变的同一类数据在某台机器上运行时,所用的时间总是小于f(n)的一个常数倍。所以f(n)是计算时间T(n)的一个上界函数,T(n)的数量级就是f(n)典型的增长阶:O(1), O(lgn), O(n), O(nlgn), O(n2), O(n3), O(2n), O(n!)2.2 算法的渐进分析算术运算: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)) 。若T(n)是关于n的k阶多项式,那么T(n)=O(nk)证明:取n0=1,当n=n0时,利用T(n)的定义和一个简单的不等式,有取c=|am|+….+|a0| 定理得证.事实上,只要将n0取得足够大,可以证明只要c是比|am|大的任意一个常数,此定理都成立。2.2 算法的渐进分析定理1.1若T(n)=amnm+…+ a1n+ a0是一个m次多项式,则T(n)=O(nm)。 此定理表明,变量n的固定阶数为m的任一多项式,与此多项式的最高阶nm同阶.2.2 算法的渐进分析示例2.2 算法的渐进分析2.2 算法的渐进分析2.2 算法的渐进分析例.1)假设某算法在输入规模是 时为 .在某台计算机上实现并完成该算法的时间是 秒. 现有另一台计算机,其运行速度为第一台的64倍, 那么,在这台计算机上用同一算法在 秒内能解决规模为多大的问题?规模语句频度运行时间/每语句总时间关系式:算法语句频度*运行速度(时间/每语句)=运行总时间解:设在新机器上 秒内能解决规模为 的问题,由于新机器运行速度提高64倍,则运行时间/每语句变为由关系式,得解,得2.2 算法的渐进分析2)若上述算法改进后,新算法, 则在新机器上用秒时间能解决输入规模为多大的问题?设在新机器上用 t 秒时间能解决输入规模为 N 的问题,则由于此时,新机器的运行速度/每语句为:代入关系式,得解,得思考:以上说明了什么问题?T(n)执行次数c×g(n)n0之前的情况无关紧要n0问题规模n2.2 算法的渐进分析2. 大Ω符号--运行时间的下界 定义1.2 若存在两个正的常数c和n0,对于任意n≥n0,都有T(
文档评论(0)