第2章算法效率分析基础.ppt.pptVIP

  1. 1、本文档共34页,可阅读全部内容。
  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文档。上传文档
查看更多
第2章算法效率分析基础.ppt.ppt

Fibonacci numbers The Fibonacci sequence: 0, 1, 1, 2, 3, 5, 8, 13, 21, … Fibonacci recurrence: F(n) = F(n-1) + F(n-2) F(0) = 0 F(1) = 1 Fibonacci numbers 上述递推式是常系数齐次二阶线性递推式 可采用P.359给出的方法求解 Fibonacci numbers Computing Fibonacci numbers Nonrecursive brute-force algorithm assert(n=0); a=F(0), b=F(1) for(i=1;in;++i) { tmp=a+b;a=b;b=tmp; } return n==0? a: b; Explicit formula algorithm Logarithmic algorithm based on formula: for n≥1, assuming an efficient way of computing matrix powers. * * * 第2章 算法效率分析基础 为什么需要对一个算法进行效率分析 作比较 对于同一问题,为什么一个解法比另一个解法好 寻找解决一个问题的算法的极限 解决一个问题的最快可以达到多快(度量) 如解决排序问题的算法最快是多少? 一个问题是否不存在更快的解法(NP问题) 如在冯诺依曼机器上,解决旅行商问题的任何算法的时间费用都将是城市数量的指数级 算法分析 需解决的问题 度量一个算法的时间效率(时间费用) 度量一个算法的空间效率(空间费用) 优化算法 最小化一个算法的时间效率或空间效率 途径 理论分析 经验分析 理论分析 时间效率 识别一个算法的“基本操作” 对该算法总运行时间贡献最大的操作被认为是基本操作 将“基本操作”的执行次数C(n)看成是“输入规模n”-的函数,并通过推导的方法找出C(n) 然后估计算法的运行时间T(n)为 cop是特定机器上一个算法的基本操作的执行时间,一般假定为常数 输入规模与基本操作的例子 问题 输入规模 基本操作 从n个元素的列表中搜索特定的元素 n 比较 两个实数矩阵的乘法 矩阵的维度 浮点乘 计算 an n 浮点乘 图问题 结点和边的数量 访问一个结点或 穿越一条边 时间效率的经验分析方法 选定特定的输入样本 使用物理时间单位(如秒)或对基本操作的执行次数进行计数 分析实验结果 最优、最差和平均效率 大多数算法的效率C(n)不仅依赖于输入的规模而且依赖于输入的其它细节:次序、各元素的差异等: 最差情况: Cworst(n) 即C(n)最大值 最好情况: Cbest(n) 即C(n)最小值 平均情况: Cavg(n) 即在一般的输入样本情况下C(n)的值 严格地讲, Cavg(n)是假定输入规模为n的输入数据在所有可能的形式下,C(n)的数学期望 例子:顺序搜索 算法见书P.36 输入: 数组A[1..n],待找元素k 基本操作:比较 其中pi为在A[1..n]的第i位置找到k的概率,Ci为相应的比较次数 Pn+1相当于没有找到的概率 基本操作次数的公式类型 精确公式 如:C(n) = n(n-1)/2 精确的常量乘数和增长次数(不精确) 如: C(n) ≈ 0.5 n2 未知的常量乘数c 如: C(n) ≈ c n2 增长次数 在忽略常数因子后的执行次数C(n)在n→∞时的度量称为增长次数 如对于C(n) ≈ c × n(n-1),一般在下述场合下只需关心增长次数,即n2项 如果算法在一台比现有机器快10倍的机器上运行,它运行有多快?10倍 如果输入规模翻倍,该算法会运行多长时间?约4倍的时间 常见增长次数(函数) 渐进增长率 作为一种比较两个函数的增长次数的方法 考虑n→∞并忽略常数因子时,函数增长率的比较 O,Θ,Ω符号的粗略含义 O(g(n)) 表示增长率不超过g(n)的函数集合 Θ(g(n)) 表示增长率与g(n)相同的函数集合 Ω(g(n)) 表示增长率大于或等于g(n)的函数集合 O符号 Ω符号 Θ符号 渐进符号的一个定理 将上述命题中的O换成 Ω或Θ同样成立 利用极限比较增长次数 t(n) g(n) 关系 10n 2n2 t(n)?O(g(n)) logb n logc n t(n)??(g(n)) n(n+1)/2 n2 t(n)??(g(n)) 基本的效率类型 1 常量 log n 对数 n 线性 n log n n log n n2 平方 n3 立方 2n 指数 n! 阶乘 2.3 非递归算法的数学分析 步骤 决定哪个(哪些)输入参数表示输入规模 找

文档评论(0)

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

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

版权声明书
用户编号:5311233133000002

1亿VIP精品文档

相关文档