第二章算法分析基础优秀课件.ppt
《第二章算法分析基础优秀课件.ppt》由会员分享,可在线阅读,更多相关《第二章算法分析基础优秀课件.ppt(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章算法分析基础第1页,本讲稿共40页算法分析的任务:对设计出的每一个具体的算法,利用数学工具,讨论其复杂度。2.1 2.1 算法分析体系及计量算法分析体系及计量第2页,本讲稿共40页对算法的评价有两个大的方面:一.对算法的维护的方便性。二.算法在实现运行时占有的机器资源的多少,即算法的运行的时间和空间效率。2.1.1 2.1.1 算法分析的评价体系算法分析的评价体系第3页,本讲稿共40页 对对算算法法的的分分析析和和评评价价,一一般般应应考考虑虑正正确确性性、可可维维护护性、可读性、运算量及占用存储空间等性、可读性、运算量及占用存储空间等诸多因素。诸多因素。其中评价算法的三条主要其中评价算
2、法的三条主要标准标准是:是:(1)(1)算法实现所耗费的算法实现所耗费的时间时间;(2)(2)算法实现所所耗费的存储算法实现所所耗费的存储空间空间,其中,其中 主要考虑辅助存储空间;主要考虑辅助存储空间;(3)(3)算法应易于算法应易于理解理解,易于编码,易于调,易于编码,易于调 试等等。试等等。第4页,本讲稿共40页 1.1.和算法执行时间相关的因素和算法执行时间相关的因素:1)问题中数据存储的数据结构2)算法采用的数学模型 3)算法设计的策略4)问题的规模 5)实现算法的程序设计语言 6)编译算法产生的机器代码的质量 7)计算机执行指令的速度 2.1.2 2.1.2 算法的时间复杂性算法的
3、时间复杂性第5页,本讲稿共40页2 2算法效率的衡量方法算法效率的衡量方法 通常有两种通常有两种衡量算法效率衡量算法效率的方法的方法:1 1)事后统计法(有缺点,较少使用)事后统计法(有缺点,较少使用)2 2)事前分析估算法)事前分析估算法 算法的时间效率是问题规模的函数。算法的时间效率是问题规模的函数。假假如如,随随着着问问题题规规模模n n的的增增长长,算算法法执执行行时时间间的的增增长长率率和和f(n)f(n)的增长率相同的增长率相同,则可记作则可记作:T(n)=(f(n)T(n)=(f(n)称称T(n)T(n)为为算算法法的的渐渐近近时时间间复复杂杂度度(Asymptotic(Asym
4、ptotic Time Time Complexity),Complexity),简称简称时间复杂度时间复杂度。是数量级的符号。是数量级的符号。第6页,本讲稿共40页3 3时间复杂度估算时间复杂度估算 因为:算法=控制结构+原操作(固有数据类型的操作)所以:算法的执行时间=原操作的执行次数*原操作的执行时间 语句的频度语句的频度指的是该语句重复执行的次数。一个算法转换为算法后所耗费的时间,除了与所用的计算软、硬件环境有关外,主要取决于算法中指令重复执行的次数,即语句的频度相关。第7页,本讲稿共40页 一个算法中所所有有语语句句的的频频度度之之和和构成了该算法的运行时间。例如:for(j=1;j
5、=n;+j)for(k=1;k=n;+k)+x;语句“+x、k=n、+k”的频度是n2,语句“j=1、k=1”的频度是1,语句“j=n;+j”的频度是n。算法运行时间为:3*n2+2n+2。第8页,本讲稿共40页 经经常常从从算算法法中中选选取取一一种种对对于于所所研研究究的的问问题题来来说说是是基基本本(或或者者说说是是主主要要)的的原原操操作作,以以该该基基本本操操作作在在算算法法中中重重复复执执行行的的次次数数作作为为算算法法运运行行时时间间的的衡衡量量准准则则。这这个个原原操操作作,多多数数情情况况下下是是最深层次循环体内的语句中的原操作最深层次循环体内的语句中的原操作。例如:例如:f
6、or(i=1;i=n;+i)for(i=1;i=n;+i)for(j=1;j=n;+j)for(j=1;j=n;+j)ci,j=0;ci,j=0;for(k=0;k=n;+k)for(k=0;k=n;+k)ci,j=ci,j+ai,k*bk,j;ci,j=ci,j+ai,k*bk,j;该算法的基本操作是乘法操作,时间复杂度为n3 3。第9页,本讲稿共40页例:n2+n+1的时间复杂度?解:与n2的数量级相等(该表达式当n足够大时约等于n2),这个算法的时间复杂度算法的时间复杂度为:T(n)=O(n2)。数量级相等是这样定义的,设f(n)是一个关于正整数n 的函数,若存在一个常数C,使 则称f(
7、n)与g(n)是同数量级的函数。上节 下节第10页,本讲稿共40页算法(渐进渐进)时间复杂度,一般均表示为以下几种数量级的形式(n为问题的规模,c为一常量):(1)称为常数级 (logn)称为对数级 (n)称为线性级 (nc c)称为多项式级 (cn)称此为指数级 (n!)称为阶乘级 上节 下节第11页,本讲稿共40页 以上时间复杂度级别是由低到高排列的,其随规模n的增长率,由图2-1可见一斑:图2-1 T(n)与规模n的函数关系第12页,本讲稿共40页原则上一个算法的时间复杂度,最好不要采用指数级和阶乘级的算法,而应尽可能选用多项式级或线性级等时间复杂度级别较小的算法。对于较复杂的算法,可将
8、它分隔成容易估算的几个部分,然后再利用“O的求和原则得到整个算法的时间复杂度。例:若算法的两个部分的时间复杂度分别为 T1(n)=O(f(n)和 T2(n)=O(g(n),则总的时间复杂度为:T(n)=T1(n)+T2(n)=O(max(f(n),g(n)。第13页,本讲稿共40页4 4问题时间复杂度的上界和下界问题时间复杂度的上界和下界略第14页,本讲稿共40页5.5.算法时间复杂度的最好情况和最坏情况算法时间复杂度的最好情况和最坏情况 我们要确定能反映出算法在各种情况下工作的数据集我们要确定能反映出算法在各种情况下工作的数据集,选取的数据要能够反映、代表各种计算情况下的估算选取的数据要能够
9、反映、代表各种计算情况下的估算,包包括括最好情况下最好情况下的时间复杂度的时间复杂度(Tmax)(Tmax)最坏情况下最坏情况下的时间复杂度的时间复杂度(Tmin)(Tmin)平均情况下平均情况下的时间复杂度的时间复杂度(Tavg)(Tavg)最有实际价值的最有实际价值的,是是最坏情况下最坏情况下的时间复杂性。的时间复杂性。第15页,本讲稿共40页算法的存储量包括:1)输入数据所占空间:取决于问题本身,与算法无关2)算法本身所占空间:相对固定3)辅助变量所占空间2.1.3 2.1.3 算法的空间复杂性算法的空间复杂性第16页,本讲稿共40页 研究算法的空间效率,只需要分析除输入和算法之外的额外
10、空间。若所需额外空间相对于输入数据量来说是常数,则称此算法为原地工作,否则,它应当是规模的一个函数。算法的空间复杂度是指算法在执行过程中所占辅助存储空间的大小用S(n)表示。算法的空间复杂度S(n)也可表示为:S(n)=(g(n)表示随着问题规模n的增大,算法运行所需存储量的增长率与g(n)的增长率相同。第17页,本讲稿共40页NP完全性问题:属于“计算复杂性”研究的课题。计算复杂性:就是用计算机求解问题的难易程度。度量标准:一.计算所需的步数或指令条数(这叫时间复杂度)。二.计算所需的存储单元数量(这叫空间复杂度)。上节 下节2.1.4NP2.1.4NP完全问题完全问题第18页,本讲稿共40
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二 算法 分析 基础 优秀 课件
限制150内