算法引论幻灯片.ppt





《算法引论幻灯片.ppt》由会员分享,可在线阅读,更多相关《算法引论幻灯片.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、算法引论第1页,共36页,编辑于2022年,星期一时间复杂度计算表示时间复杂度计算表示 假设假设f(n)为某算法的计算时间,为某算法的计算时间,n是问题的大小,是问题的大小,g(n)是事先确是事先确定的简单函数,如:定的简单函数,如:nm,2n,n!。n定义定义1-1如果存在两个正常数如果存在两个正常数c和和n0,对所有,对所有n n0,有,有|f(n)|c|g(n)|则记作:则记作:f(n)=O(g(n),O为数量级(阶数),为数量级(阶数),g(n)是计算时是计算时间间f(n)的一个的一个上界函数上界函数,f(n)的数量级是的数量级是g(n)。定理定理1-1 若若 是一个是一个m次多项式,
2、则次多项式,则证明:证明:(?)(?)说明:变量说明:变量n的阶数为的阶数为m的多项式与其最高阶同阶的多项式与其最高阶同阶。第2页,共36页,编辑于2022年,星期一时间复杂度计算表示时间复杂度计算表示定义定义1(2)(下界函数)如果存在两个正常数(下界函数)如果存在两个正常数c和和n0,对所有,对所有nn0,有,有|f(n)|c|g(n)|则记作:则记作:f(n)=(g(n),g(n)是计算时间是计算时间f(n)的一个的一个下界函数下界函数。定义定义1(3)(双界函数)如果存在两个正常数(双界函数)如果存在两个正常数c1,c2和和n0,对所有,对所有nn0,有,有 则:则:说明:说明:g(n
3、)既是计算时间既是计算时间f(n)的一个下界函数也是一的一个下界函数也是一个上界函数。个上界函数。第3页,共36页,编辑于2022年,星期一时间复杂度计算表示时间复杂度计算表示两个函数阶数的比较方法有如下结论:两个函数阶数的比较方法有如下结论:假设假设有下列情况:有下列情况:(1)如果)如果L=a,a是有限正常数,则是有限正常数,则;(2)如果)如果L=0,则,则f(n)的阶数比的阶数比g(n)低(低();由此可以得到数量级的大小比较:由此可以得到数量级的大小比较:(多项式时间算法与指数时间算法)(多项式时间算法与指数时间算法)第4页,共36页,编辑于2022年,星期一时间复杂度的几个相关问题
4、时间复杂度的几个相关问题问题问题1 算法耗费的时间和语句频度算法耗费的时间和语句频度一个算法耗费的时间一个算法耗费的时间=算法中每条语句的执行时间之和算法中每条语句的执行时间之和每条语句的执行时间每条语句的执行时间=语句的执行次数(语句的执行次数(frequency count)语句执行一次所需时间语句执行一次所需时间n算法转化为程序后,算法转化为程序后,每条语句的执行时间取决于:机器每条语句的执行时间取决于:机器的指令性能,速度以及编译所产生的代码质量等难以确定的指令性能,速度以及编译所产生的代码质量等难以确定的因素的因素n一般分析时是独立于机器的软硬件系统分析算法的复一般分析时是独立于机器
5、的软硬件系统分析算法的复杂性,即设每条语句执行一次的时间均为单位时间杂性,即设每条语句执行一次的时间均为单位时间n一个算法的时间耗费就是该算法中所有语句的频度和一个算法的时间耗费就是该算法中所有语句的频度和第5页,共36页,编辑于2022年,星期一例例1-1(矩阵乘法)求两个(矩阵乘法)求两个n阶方阵阶方阵A,B的乘积的乘积CVoidMatrixMultiply(intAnn,intBnn,intCnn)inti,j,k;(1)For(i=0;in;i+)(2)for(j=0;jn;j+)(3)Cij=0;(4)for(k=0;kn;k+)(5)Cij=cij+AikBkj 其渐近时间复杂度:
6、其渐近时间复杂度:,T(n)的数的数量级是量级是n3,即,即T(n)=O(n3)。频度:频度:频度:频度:n+1n+1,循环执行,循环执行,循环执行,循环执行n n次次次次n(n+1)n(n+1)n n2 2n n2 2(n+1)(n+1)n n3 3频度和频度和频度和频度和=n+1+n(n+1)+n=n+1+n(n+1)+n2 2+n+n2 2(n+1)+n(n+1)+n3 3=2n=2n3 3+3n+3n2 2+2n+1=T(n)+2n+1=T(n)第6页,共36页,编辑于2022年,星期一问题问题2 用渐近时间复杂度评价算法的时间性能用渐近时间复杂度评价算法的时间性能例例1-2 设有算法
7、设有算法A1和和A2求解同一问题,时间复杂度分别为求解同一问题,时间复杂度分别为 。容易看出容易看出它们的渐近时间复杂度为它们的渐近时间复杂度为O(n2)与与O(n3),宏观地评价了这两,宏观地评价了这两个算法在时间方面的质量。约定不区分时间复杂度和渐近时间复个算法在时间方面的质量。约定不区分时间复杂度和渐近时间复杂度,常用渐近时间复杂度评价算法的时间性能。杂度,常用渐近时间复杂度评价算法的时间性能。(2)随着问题规模)随着问题规模n的增大,两个算法的时间开销比为:的增大,两个算法的时间开销比为:亦随亦随之增大,之增大,(1)当输入量)当输入量n20时,有时,有说明当问题规模比较大的时候,说明
8、当问题规模比较大的时候,A1比比A2有效的多。有效的多。第7页,共36页,编辑于2022年,星期一问题问题3 3 算法的时间复杂度不仅仅依赖于问题的规模,还要算法的时间复杂度不仅仅依赖于问题的规模,还要与输入实例的初始状态有关(算法工作量)与输入实例的初始状态有关(算法工作量)例例1-3 对于在数组对于在数组 中查找给定值中查找给定值k的算法,的算法,大致如下:大致如下:(1)i=n-1;(2)while(i0&(Ai!=k)(3)i-;(4)return i;语句(语句(3)的频度不仅与问题规模)的频度不仅与问题规模n有关,而且与输入有关,而且与输入实例中实例中A的各元素取值及的各元素取值及
9、k的取值有关的取值有关第8页,共36页,编辑于2022年,星期一(1)若若A中没有与中没有与k相等元素,则语句相等元素,则语句(3)的频度的频度f(n)=n;(2)若若A中最后一个元素等于中最后一个元素等于k,则语句则语句(3)的频度的频度f(n)=0;第9页,共36页,编辑于2022年,星期一问题问题4 最坏时间复杂度与平均时间复杂度最坏时间复杂度与平均时间复杂度最坏情况下的时间复杂度最坏情况下的时间复杂度是:算法在任何输入实例上的运是:算法在任何输入实例上的运行时间上的上界,保证了算法运行时间不会比任何更长;行时间上的上界,保证了算法运行时间不会比任何更长;平均情况下的时间复杂度平均情况下
10、的时间复杂度是:所有可能的输入实例均以等概是:所有可能的输入实例均以等概率的出现的情况下,算法的期望运行时间。率的出现的情况下,算法的期望运行时间。时间复杂度和空间复杂度统称为算法的复杂度。时间复杂度和空间复杂度统称为算法的复杂度。第10页,共36页,编辑于2022年,星期一2 2 算法终止性证明算法终止性证明-良序原则良序原则n利用良序原则证明依赖于利用良序原则证明依赖于不可数集合不可数集合的命题的命题P(x)。n良序关系良序关系设设是集合是集合S上的一个良序关系,如果满足以下性质:上的一个良序关系,如果满足以下性质:(1)给定集合)给定集合S中元素中元素x,y,z,如果,如果xy,yz,则
11、,则xz。(2)给定集合)给定集合S中元素中元素x,y,以下三种可能性恰有一种为真:,以下三种可能性恰有一种为真:xy,x=y,yx(3)如果)如果A是是S的任何非空子集,则的任何非空子集,则A中必有一个元素中必有一个元素x,使得对于,使得对于A中所有的中所有的y,有,有xy。例如:自然数集合对于小于(例如:自然数集合对于小于()关系良序。)关系良序。性质(性质(性质(性质(3)说明:任何一个非空的良序集合都有一个)说明:任何一个非空的良序集合都有一个)说明:任何一个非空的良序集合都有一个)说明:任何一个非空的良序集合都有一个最小元素。(最小元素。(最小元素。(最小元素。(实数集合实数集合?)
12、?)第11页,共36页,编辑于2022年,星期一良序原则良序原则命题命题1是集合是集合S的一个良序,当且仅当它满足性质(的一个良序,当且仅当它满足性质(1)和()和(2),并且对于所有的),并且对于所有的j1,不存在具有,不存在具有xj+1xj的的无限序列无限序列证明证明:()设)设)设)设是集合是集合是集合是集合S S的良序,如果存在这样的一个序列,的良序,如果存在这样的一个序列,的良序,如果存在这样的一个序列,的良序,如果存在这样的一个序列,则由该序列成员组成的集合则由该序列成员组成的集合则由该序列成员组成的集合则由该序列成员组成的集合A A是集合是集合是集合是集合S S的一个非空子集,的
13、一个非空子集,的一个非空子集,的一个非空子集,A A不满足性质(不满足性质(不满足性质(不满足性质(3 3),与),与),与),与是集合是集合是集合是集合S S的良序矛盾。的良序矛盾。的良序矛盾。的良序矛盾。这样就可以在这样就可以在A中找到存在具有中找到存在具有xj+1xj的无限序列的无限序列。与给定条件矛盾,故假设错误,。与给定条件矛盾,故假设错误,是集合是集合S的一个良序。证毕。的一个良序。证毕。()若)若)若)若满足(满足(满足(满足(1 1),(),(),(),(2 2)但不满足()但不满足()但不满足()但不满足(3 3)。设)。设)。设)。设A A是是是是S S一个没有最小元素的非
14、空子集。由于一个没有最小元素的非空子集。由于一个没有最小元素的非空子集。由于一个没有最小元素的非空子集。由于A A非空,所以可非空,所以可非空,所以可非空,所以可以找到以找到以找到以找到,由于由于由于由于A A中无最小元素,故有中无最小元素,故有中无最小元素,故有中无最小元素,故有,由于,由于,由于,由于x x2 2也不是最小元素,可以同样找到也不是最小元素,可以同样找到也不是最小元素,可以同样找到也不是最小元素,可以同样找到第12页,共36页,编辑于2022年,星期一算法终止性证明算法终止性证明说明:说明:命题命题1可以用来证明算法的终止性:如果能够把一个计算的可以用来证明算法的终止性:如果
15、能够把一个计算的各个状态映射到一个良序集各个状态映射到一个良序集S,使得计算的每一个步骤总是从一个,使得计算的每一个步骤总是从一个状态状态x进入到另一个状态进入到另一个状态y,并且有,并且有f(y)f(x),则此算法必定,则此算法必定终止。终止。第13页,共36页,编辑于2022年,星期一良序原则良序原则命题命题2设设是集合是集合S的一个良序,并且设的一个良序,并且设p(x)是关于是关于S元素元素x的一个命的一个命题。如果题。如果p(x)能在能在p(y)对于所有的对于所有的yx为真的假定下得证,则为真的假定下得证,则p(x)对对S中所有的中所有的x为真为真。理论上说明算法终止性是可以证明的。理
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 引论 幻灯片

限制150内