算法设计与分析王红梅第二版第2章算法分析基础.pptVIP

算法设计与分析王红梅第二版第2章算法分析基础.ppt

  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.3 若存在三个正常数c1、c2和n 0 ,对于任意n≥n 0,都有c1 ×f(n) ≥ T(n)≥ c2 ×f(n),就称T(n)= Θ(f(n)) 。 * Algorithm Introduction * Θ符号意味着T(n)与f(n)同阶,用来表示算法的精确阶。 问题的计算复杂性上下界(准确界) n0 问题规模n 执行次数 n0之前的情况无关紧要 T(n) c2×f(n) c1×f(n) 2.3.1 问题的计算复杂性下界 例:T(n)=3n-1,上界?下界?上下界? 解: 当n≥1时,3n-1≤3n=Ο(n) 当n≥1时,3n-1 ≥ 3n-n=2n=Ω(n) 当n≥1时, 3n≥ 3n-1 ≥ 2n,则3n-1=Θ(n) 2.3.1 问题的计算复杂性下界 大Ω常与大O配合以证明某问题的一个特定算法是该问题的最优算法,或是该问题中的某算法类中的最优算法。一般情况下,如果能证明某问题的时间下界是Ω(g(n)),那么,对以时间O(g(n))来求解该问题的任何算法(其实就是确定算法的精确阶是Θ (g(n))),都认为是求解该问题的最优算法。 2.3.1 问题的计算复杂性下界 例2.10 如下算法实现在一个数组中求最小值元素,证明该算法是最优算法。 int ArrayMin(int a[], int n){ int min=a[0]; for(int i=1;in;i++) if(a[i]min) min=a[i]; return min; } 2.3.1 问题的计算复杂性下界 证明:算法需要进行n-1次比较,时间复杂性是O(n)。下面要证明问题的下界是Ω(n),即对于任何n个整数,求最小值元素至少需要进行n-1次比较。 将n个整数分为三个动态的集合。 任何一个通过比较求最小值元素的算法都要从(n,0,0)状态开始,最终到达(0,n-1,1)。这个过程实际上是将元素从A向B和C移动,但每次比较,至多能把一个较大元素从集合A移向集合B,因此,任何求最小值算法至少要进行n-1次比较,其时间下界是Ω(n)。 所以算法是最优算法。 初始状态 (n,0,0) 完成状态 (0,n-1,1) 算法运行 确定和证明某个问题的计算复杂性下界是很困难的,因为不可能枚举该问题的所有算法。事实中,存在大量问题,它们的下界是不清楚的。 2.3.2 平凡下界 平凡下界:使用计数方法得出的算法复杂性下界。即对问题的输入中必须要处理的元素进行计数,同时对必须要输出的元素进行计数,得到一个平凡下界。 例如,任何生成n个不同元素的所有排列对象的算法必定属于Ω(n!),因为输出的规模就是n! 平凡下界很容易得出,但往往过小而失去意义。例如,TSP问题的平凡下界是Ω(n!),但没有意义,至今没有找到一个多项式时间算法。 2.3.3 判定树模型 许多算法的工作方式都是对输入元素进行比较,例如排序和查找算法,故可以用判定树来研究这些算法的时间性能。 判定树:满足如下条件的二叉树: (1)每个内部结点对应形如x≤y的比较,根据关系成立与否,控制转移到左右子树; (2)每个叶子结点表示问题的一个结果。从根到叶子结点所走过的路径代表算法执行的过程,路径的长度即代表算法执行的时间 2.3.3 判定树模型 例2.11 用判定树模型求解排序问题的时间下界。 解:根据排序算法中的比较,建立起判定树来描述算法,则判定树的高度就是算法的下界。 补充材料:算法的实验分析 渐进分析能够在数量级上对算法进行精确度量,但数学不是万能的,许多貌似简单的算法很难用数学的精确性和严格性来分析,尤其在做平均效率分析时。 算法的实验分析是一种事后计算的方法,通常需要将算法转换为对应的程序并上机运行。例如可在程序中设置计数器变量来记录基本语句的执行次数。 void SubbleSort(int r[], int n){ int count1,count2=0; int bound,exchange=n-1; while(exchange!=0){ //当上一趟排序有记录交换时 bound=exchange;exchange=0; for(int j=0; jbound; j++) if( ++count1r[j]r[j+1]){ int temp=r[j]; r[j]=r[j+1]; r[j+1]=temp; count2+=3; exchange=j; //记载每一次记录交换的位置 } } cout“比较次数是”count1endl; cout“移动次数是”count2endl; } * Algorithm Introduction * 补充材料 算法的实验分析 一般步骤: 1. 明确实验目的 (验证正确

文档评论(0)

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

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

1亿VIP精品文档

相关文档