算法分析与设计第 2章.pptVIP

  1. 1、本文档共43页,可阅读全部内容。
  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 章 算 法 分 析 基 础 主要内容 2.1 算法分析体系及计量 2.1.1 算法分析的评价体系 2.1.2 算法的时间复杂性 2.1.3 算法的空间复杂性 2.1.4 NP完全问题 2.2 算法分析实例 2.2.2 递归算法分析 2.2.3 提高算法质量 本章小结 算法时间杂性 算法空间杂性 非递归算法分析 递归算法分析 如何提高算法质量 2.算法的时间复杂度还与输入实例的初始状态有关。 这类算法的时间复杂度的分析比较复杂,一般分最好情况(处理最少的情况),最坏情况(处理最多的情况)和平均情况分别进行讨论。 【例4】在数组A[0..n-1]中查找给定值K 的算法大致如下: (1) i=n-1; (2) while( i=0 and A[i]k ) (3) i=i-1; (4) return i; 此算法的频度不仅与问题规模n有关,还与输入实例中A的各元素取值及k的取值有关: 1. 若A中没有与k相等的元素,则语句(2)的频度f(n)=n; 这是最坏情况。 2. 若A的最后一个元素等于k,则语句(2)的频度f(n)是常数1;这是最好情况。 设被查项K在数组中出现的概率为q,当需要查找的K为数组中的第i个元素时,则在查找过程中需要做i次比较,当需要查找的K不在数组中时,需要比较n+1次。则有 如果K出现在数组每一个位置上的可能性是一样的,则概率为q/n,而不在数组中的概率为1-q。即有 则在平均情况下的比较次数为: 在求平均情况时,一般地假设查找不同元素的概率P是相同的,则算法的平均复杂度为: 若对于查找不同元素的概率P不相同时,其算法复杂度就只能做近似分析,或在构造更好的算法或存储结构后,做较准确的分析。 一.进一步认识递归 1.执行过程 2.实现机理简介 二.效率分析方法 1.代入法 2.迭代法 3.套用公式法 4.差分方程法 5.母函数法 【例1】求N! 构造算法中的两个步骤: 1)N!=N*(N-1)! 2)0!=1, 1!=1。 递归算法如下: 以n=3为例,调用过程如下: fact(3)-fact(2)-fact(1)-fact(2)-fact(3) 递 归 回 溯 迭代法介绍: 用迭代方法估计递归算法的解, 就是充分利用递归算法中的递归关系,通过一定的代数运算和数学分析的级数知识,得到问题的复杂度。 递归方程具体就是利用递归算法中的递归关系写出递归方程,迭代地展开的右端,使之成为一个非递归的和式,然后通过对和式的估计来达到对方程左端即方程的解的估计。 【例1】求n! 递归方程为: T(n)=T(n-1)+O(1) 其中O(1)为一次乘法操作. 迭代求解过程如下: T(n)=T(n-2)+O(1)+O(1) =T(n-3)+O(1)+O(1)+O(1) …… =O(1)+……+O(1)+O(1)+O(1) =n*O(1) =O(n) 【例2】抽象地考虑以下递归方程,且假设n=2k,则迭代求解过程如下: 【例3】以下递归方程,是第四章将介绍的二分算法典型的递归方程。同样假设n=2k: T(n)= 2T(n/2)+O(n) = 4T(n/4)+2O(n/2)+O(n) …… = O(n)+……+O(n)+O(n)+O(n) = k*O(n)=log2n*O(n) 若递归次数再多一些,或递归阶再大一些, 如:T(n)=2*T(n/2)+O(n)等, 得到的就不是线性的复杂性了,复杂性为O(n*log2n)。

您可能关注的文档

文档评论(0)

精华文档888 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档