计算复杂性和算法分析计算机科学导论第六讲.ppt
《计算复杂性和算法分析计算机科学导论第六讲.ppt》由会员分享,可在线阅读,更多相关《计算复杂性和算法分析计算机科学导论第六讲.ppt(43页珍藏版)》请在三一办公上搜索。
1、计算复杂性和算法分析计算机科学导论第六讲,计算机科学技术学院陈意云0551-63607043http:/,课 程 内 容,课程内容围绕学科理论体系中的模型理论,程序理论和计算理论1.模型理论关心的问题 给定模型M,哪些问题可以由模型M解决;如何比较模型的表达能力2.程序理论关心的问题给定模型M,如何用模型M解决问题包括程序设计范型、程序设计语言、程序设计、形式语义、类型论、程序验证、程序分析等3.计算理论关心的问题给定模型M和一类问题,解决该类问题需多少资源,本讲座用简单的例子来扼要介绍计算复杂性和算法分析,2,讲 座 提 纲,基本知识可计算理论,计算资源,计算复杂性理论,算法分析复杂性的计量
2、问题规模、复杂性函数、最坏、最好和平均三种情况的时间复杂性复杂性的渐近行为及其阶复杂性的渐近行为、渐近意义下的记号O、记号O的运算规则、复杂性渐近阶分析的重要性算法复杂性渐近阶的分析算法的复杂性渐近阶的分析、语句规则的例举,3,基 本 知 识,可计算理论研究计算的一般性质的数学理论,也称算法理论通过建立计算的数学模型,区分可计算与不可计算可计算函数:能够在抽象计算机上编出程序计算其值的函数。这样的程序称为算法这样就可以讨论哪些函数是可计算的,哪些函数是不可计算的可计算性:指一个实际问题是否可以使用计算机来解决(能解决一定是指有限步内解决)上一讲介绍的就是计算模型和可计算函数,4,基 本 知 识
3、,计算资源在计算复杂性理论内,计算资源是指在某个计算模型之下,求解一个问题所要消耗的资源时间资源:求解问题所需花费的时间,通常用计算步数来度量空间资源:求解问题所需占用的空间,通常用存储器空间的大小来度量计算所需资源的多少是衡量计算复杂性的依据实际应用关心的资源与理论上的有区别:硬件资源(如计算机、存储器)、软件资源、网络资源(如通信带宽)等,5,基 本 知 识,计算复杂性理论是理论计算机科学和数学的一个分支,它致力于将可计算问题根据其本身固有的难度进行分类,以及把这些类别相互联系起来它尝试把问题分成两类:在适当的资源限制下能解(容易)和不能解(困难)的问题。一个问题,若求解需很多资源(无论什
4、么算法),则被认为是难解的通过引入计算模型来研究这些问题,并给出定量计算解决问题所需的资源(时间和空间)的方法,由此把确定资源的方法数学化作用之一是确定计算机能解和不能解的实际界线,6,基 本 知 识,计算复杂性理论研究问题之一:NP=?PP(Polynomial):在确定型图灵机上有多项式时间算法的问题的集合NP(Nondeterministic Polynomial):在非确定型图灵机上有多项式时间算法的问题的集合NP=?P:是计算机科学中非常重要而又经历了几十年始终未解决的一个问题它的解决可导致一系列理论问题的解决,7,基 本 知 识,算法分析确定执行一个算法需要消耗的计算资源的数量的分
5、析过程算法的效率或复杂度表示为一个函数,其定义域是输入数据的规模(长度,算法大都设计成允许任意长的输入),值域通常是执行步数(时间复杂度)或所需存储空间数量(空间复杂度)在算法的理论分析中,通常是估计算法渐近意义上的复杂度精确分析算法的复杂度有时也可行,但它通常基于一些与具体实现相关的假设,8,基 本 知 识,可计算性、计算复杂性和算法分析的区别算法分析致力于分析求解一个问题的某个具体算法所需的资源量计算复杂性理论关注的是用所有可能算法解决同一类问题层面上的一般性议题可计算性理论关注的是原则上可以用算法求解的问题(把问题区分为可计算和不可计算)资源受限和不受限是区分计算复杂性理论和可计算性理论
6、的一个重要标志,9,复杂性的计量,两种查找算法的效率比较int search(int val)/顺序查找int j=0;/int am无重复且已按从小到大排序while(aj val/在最坏情况下,需要把val与a的所有分量比较,10,复杂性的计量,两种查找算法的效率比较int search(int val)/二分查找 int i,j,k;/int am无重复且已按从小到大排序 i=0;j=m 1;while(i=ak)i=k+1;if(j i=1)return 1;else return k;/在最坏情况下,只需要把val与a的log2 m个/分量比较,显然效率高于前一个算法,11,复杂性的
7、计量,两种求斐波那契数列前n+1项算法的效率比较void Fibonacci(int n)/假定n=0,递归算法 int i;for(i=0;i=n;i+)printf(“%dn”,fib(n);int fib(int k)if(k=0)return 0;else if(k=1)return 1;else return fib(k 1)+fib(k 2);对该数列a0,a1,an,ak(0 k n)被重复计算多次,12,复杂性的计量,两种求斐波那契数列前n+1项算法的效率比较void Fibonacci(int n)/假定n=0,循环算法 int j0,j1,i,temp;j0=0;j1=1;
8、for(i=0;i=n;i+)printf(“%dn”,j0);temp=j1;j1=j0+j1;j0=temp;ak(0 k n)都只计算1次,显然效率高于前一个算法,13,复杂性的计量,两种求斐波那契数列前n+1项算法的效率比较void Fibonacci(int n)/假定n=0,循环算法 int j0,j1,i,temp;j0=0;j1=1;for(i=0;i=n;i+)printf(“%dn”,j0);temp=j1;j1=j0+j1;j0=temp;这种比较单纯反映作为算法精髓的计算方法本身的效率,不涉及运行这些算法的实际计算机的性能,14,复杂性的计量,复杂性函数时间和空间复杂性
9、函数分别是:T(N,I)和S(N,I)N:问题规模,I:算法的输入问题问题的规模N在数组中查找值为val的分量数组中分量个数矩阵相乘矩阵的阶数表的排序数表中的项数遍历二叉树树中节点数求数列的前n项项数n解有关图的问题图中节点数或边数,15,复杂性的计量,复杂性函数时间和空间复杂性函数分别是:T(N,I)和S(N,I)N:问题规模,I:算法的输入时间复杂性和空间复杂性的概念类同,计算方法相似,且空间复杂性分析相对简单,因此下面仅讨论时间复杂性若抽象计算机有k种元运算,它们所需时间依次为t1,t2,tk。若某算法用到这k种运算的次数依次是e1,e2,ek,ei(1 i k)是N和I的函数,ei=e
10、i(N,I),则T(N,I)=ti ei(N,I),16,复杂性的计量,复杂性函数有关算法的输入I不可能为规模为N的每一种合法输入I 都去统计 ei(N,I)简化办法:在规模为N的某些或某类有代表性的合法输入中统计相应的ei,评价这些情况下的时间复杂性,17,复杂性的计量,三种时间复杂性函数最坏情况Tmax(N)=max T(N,I)=ti ei(N,I)=T(N,I)其中DN为规模为N的合法输入集,I是达max的输入最好情况(其中I是达min的输入)Tmin(N)=min T(N,I)=ti ei(N,I)=T(N,I)平均情况 Tavg(N)=P(I)T(N,I)=P(I)ti ei(N,
11、I)其中P(I)是在算法的应用中出现输入I的概率,IDN,IDN,IDN,IDN,=max ti ei(N,I),IDN,18,复杂性的渐近行为及其阶,如何简化算法分析计算机解决的问题越来越复杂,规模越来越大若按先前介绍的方法,把所有的元计算都考虑进去,并进行精确分析,则算法分析的步骤之多,工作量之大,令人难以承受下面介绍复杂性渐近行为的概念,以简化算法分析,19,复杂性的渐近行为及其阶,复杂性的渐近行为(asymptotic behavior)对于算法A的T(N),一般来说,当N单调递增且趋于时,T(N)也单调递增且趋于对于T(N),若存在T(N),使得当N 时有(T(N)T(N)/T(N)
12、0则称T(N)是T(N)当N 时的渐近行为,或称T(N)为算法A的、当N 时的渐近复杂性直观上,T(N)是T(N)略去低项后的主项 例:若T(N)是3N2+4Nlog2N+7时,T(N)可以是3N2,若N,(4Nlog2N+7)/(3N2+4Nlog2N+7)0,N2称为阶,20,复杂性的渐近行为及其阶,复杂性的渐近行为对于T(N),若存在T(N),使得当N 时有(T(N)T(N)/T(N)0则称T(N)为算法A的当N 时的渐近复杂性若用T(N)代替T(N),作为算法A在N 时的复杂性的度量,则复杂性分析明显简化复杂性分析的目的:在于比较同一问题的不同算法的效率,若两个算法的阶不同,则可知谁效
13、率高,21,复杂性的渐近行为及其阶,复杂性的渐近行为对于T(N),若存在T(N),使得当N 时有(T(N)T(N)/T(N)0则称T(N)为算法A的当N 时的渐近复杂性简化T(N)分析:只需关心T(N)的阶,把其常数因子忽略。如在3N2中,不用关心系数 3进一步简化T(N)分析:假设算法中用到的所有不同的元运算执行一次都只需一个时间单位,22,复杂性的渐近行为及其阶,算法复杂性的渐近分析方法只要考察当问题规模充分大时,算法复杂性在渐近意义下的阶。算法分析通常都是这么做的与此简化的复杂性分析相配套,需要引入一些渐近意义下的记号,23,复杂性的渐近行为及其阶,渐近意义下的记号O(代表order o
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算复杂性 算法 分析 计算机科学 导论 第六

链接地址:https://www.31ppt.com/p-6342170.html