网站大量收购闲置独家精品文档,联系QQ:2885784924

算法设计与分析 第二章(华科课件).ppt

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法设计与分析;第2章 算法分析基础;算法分析体系及计量;对算法的评价有两个大的方面: (1)人对算法的维护的方便性。 (2)算法在实现运行时占有的机器资源的多少即算法的运行的时间和空间效率。;人对算法的维护主要有编写、调试、改正和功能扩充等工作,这就需要在算法设计时注重算法的可读性。为了算法的利用率,也要考虑算法的适用范围,注重算法的通用性、可重用性和可扩充性。 机器对算法的运行效率主要包括时间效率和空间效率。算法在完成功能的前题下最好是占用空间少而且执行时间短。 另外在算法实现时,要考虑算法在运行过程中与使用者进行交互的情况。这就要求,算法的交互部分要具有友好性和健壮性。;总之,对算法的分析和评价,一般应考虑正确性、可维护性、可读性、运算量及占用存储空间等诸多因素。其中评价算法的三条主要标准是: (1) 算法实现所耗费的时间; (2) 算法实现所所耗费的存储空间,其中主要考虑 辅助存储空间; (3) 算法应易于理解,易于编码,易于调试等等。;因为: 算法=控制结构+原操作(固有数据类型的操作) 所以 算法的执行时间= ∑原操作的执行次数*原操作 一个算法转换为程序后所耗费的时间,除了与所用的计算软、硬件环境有关外,主要取决于算法中指令重复执行原操作语句的次数。将一个算法中重复执行原操作语句的次数称为该算法的语句频度或时间频度,时间频度是问题规模n的某个函数f(n),所以将时间频度度记为f(n)。;一个算法中所有语句的频度之和构成了该算法的运行时间。 例如: for(j=1;j=n;++j) for(k=1;k=n;++k) ++x; 语句“j=1”的频度是1 语句“j=n”的频度是n+1; 语句“ ++j、k=1”的频度是n, 语句“k=n”的频度是n(n+1), 语句“++x、++k”的频度是n2, 算法时间频度:f(n)=3*n2+4n+2;对较复杂的算法计算算法的时间频度,工作量非常大,经常从算法中选取一种对于所研究的问题来说是基本(重复次数最多)的原操作,以该基本操作在算法中重复执行的次数作为算法时间频度的衡量准则。这个基本原操作多数情况下是最深层循环体内的语句中的原操作。;例如: for(i=1;i=n;++i) for(j=1;j=n;++j) { c[i,j]=0; for(k=0;k=n;++k) c[i,j]=c[i,j]+a[i,k]*b[k,j]; } 该算法的基本操作是c[i,j]=c[i,j]+a[i,k]*b[k,j];,该操作重复执行的次数为n3 ,所以该算法的时间频度f(n)=n3;;算法时间频度; f(n)= =(n(n+1)/2+(n(n+1)(2n+1)/6))/2 =n3/6+n2/2+n/3;算法时间频度;算法时间频度;3)第一个元素就找到需要比较1次,第二个元素找到需要比较2次…….,在第n个元素中找到需要比较n次,则算法时间频度为: f(n)=∑pi*f(i) Pi为第i元素找到时的概率,f(i)为第i元素找到时,时间频度。对于上述的题目中找到每个元素的概率是相等的,所以pi=1/n。 f(n)=1/n+2/n+3/n+….+n/n) =1/n(1+2+3+…n-1+n)=(n+1)/2;算法时间频度;从上上述的计算的结构中,算法的时间频度不能够反应算法执行的时间随规模增长而增长的情况。 随着模块n的增大,算法执行的时间的增长率和f(n)的增长率成正比,所以f(n)越小,算法执行的时间的增长率越低,算法的效率越高。 存在一个函数T(n),使得当n无限大时,T(n)/f(n)的极限值为不等于零的常数,则称T(n)是f(n)的同数量级函数,记作T(n)=O(fn),称T(n)为算法渐进时间复杂度,简称时间复杂度,O是数量级的符号。;算法(渐进)时间复杂度,一般均表示为以下几种数量级的形式(n为问题的规模,c为一常量): Ο(1)称为常数级 Ο(logn)称为对数级 Ο(n)称为线性级 Ο(nc)称为多项式级 Ο(cn)称为指数级 Ο(n!)称为阶乘级;以上时间复杂度数量级是由低到高排列的,其随规模n的增长率,由图2-1可见一斑:;算法的时间复杂性;算法时间复杂度计算;例如算法:

文档评论(0)

djdjix + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档