函数的渐进复杂性.ppt
《函数的渐进复杂性.ppt》由会员分享,可在线阅读,更多相关《函数的渐进复杂性.ppt(73页珍藏版)》请在三一办公上搜索。
1、1,2.,函数的渐近复杂性,第一章,2,问题的模数(size)用一个整数n表示,它是输入数据的一个量度。例如,集合的运算,可以是集合的基数;图的运算,可以是V或e。算法的计算复杂性(complexity of computation)-是问题的模数的一个函数。,3,一个算法所需的机时,表示为n的函数,称该算法的时间复杂性(time complexity)。,算法是程序的灵魂,程序的性能一般指程序的空间复杂性和时间复杂性。算法的好坏,关系到我们所求的问题是否有解!,一个算法所需的存储量,表示为n的函数,称该算法的空间复杂性(space complexity)。,4,2.1,一个实例,5,6,货郎
2、担问题,-货郎担问题(公路调度),货郎担问题,7,货郎担问题,货郎担问题一般提法为:一个货郎从某城镇出发,经过若干个城镇一次,且仅经过一次,最后仍回到原出发的城镇,问应如何选择行走路线可使总行程最短,这是运筹学的一个著名的问题。实际中有很多问题可以归结为这类问题。,8,实际中很多问题都可以归结为货郎担这类问题。如:1)物资运输路线中,汽车应该走怎样的路线使路程最短;2)工厂里在钢板上要挖一些小圆孔,自动焊接机的割咀应走怎样的路线使路程最短;3)城市里有一些地方铺设管道时,管子应走怎样的路线才能使管子耗费最少,等等。,9,我们学的数据结构里面也有很多内容和货郎担问题的思想相似!,10,最小生成树
3、的普里姆算法,11,最短路径问题,Dijkstra提出了一个按路径长度递增的顺序逐步产生最短路径的方法,称为Dijkstra算法。,12,三个城市,有2!个“遍历”路径,每个路径需做2次加法,一次比较运算。共有32!运算。,-有2!个“遍历”路径,货郎担问题,13,四个城市,有3!个“遍历”路径,每个路径需做3次加法,一次比较运算。共有43!运算。,-有3!个“遍历”路径,14,n个城市,有(n-1)!个“遍历”路径,每个路径 需做(n-1)次加法,一次比较运算。共有n(n-1)!=n!运算。按上述算法,搜索最短路径需要的 时间复杂性为:f(n)=c*n!空间复杂性为n2(n个边的相邻矩阵)。
4、显然,时间复杂性 n!是个explosive问题。,15,例如,若有56个点:有56个点需做加法:56!7.11074次 一年秒数:60秒60分24小时365天3.15107秒 每秒10亿次计算机109次/秒 56!7.11074次加法所需时间:,21063 小时,8.21061 天,2.251059 年,16,由此可见,货郎担问题的时间复杂性是:f(n)=cn!由以上的条件可知:n的函数是N R+(正实数)的一个映射。即,当n是N中的元时(nN),f(n)=cn!R+,课后思考题?,中国有34个一级城市,采用穷举法求连通各个一级城市的最短路径长度,能计算出来吗?理论上计算需要多少年?请思考:
5、采用哪些近似算法可以得到满意解?,17,18,2.2,函数的渐进控制,19,确定程序的操作计数和执行步数的目的:为了比较两个完成同一功能的程序的时间复杂性,预测程序的运行时间随着实例特征变化的变化量。,设 是算法A的复杂性函数。一般说来,当n单调增加趋于时,也将单调增加趋于。,如果存在函数,使得当 时有,则称 是 当 时的渐近性态,或称 是算法A当 的渐近复杂性。,20,定义:渐进控制 设有 N 到 R+(正实数)的映射f和g,那么g渐进控制f,若存在常数m,使 f(n)mg(n),for all nk,k0 即从某一个值k开始,g乘以一固定常数m 之后,总大于f。,21,例1.设f=3n-1
6、,g=n2,nN,当m=1,k=3时,fmg(在n=3之后,总是gf)g渐进控制f。,22,例2:设f=cn,g=n fcg,而g()*f,for all nN f与g是相互渐进的控制。,23,定理:设F是N到R+(正实数)函数的集合,那么,F的二元关系“渐进控制”自反和可迁。F的二元关系“相互渐进控制”是F的一个等价关系(自反、可迁、对称)。注:.自反:-若对每个xA,xRx,那么R自反。.可迁:-xRyyRz xRz,那么,R可迁。.对称:-若对每个x,yA,xRy yRx,那么R对称。注:A为某种关系的集合。,24,定义:g渐进控制的所有函数集合,用O(g)表示,称Order g 或 O
7、(g)。若fO(g),那么称f是O(g)。,25,定理:g是O(g)若f是O(g),那么cf也是O(g)若f和h是O(g),那么f+h也是O(g),证:设 fm1g for nk1 hm2g for nk2 那么,f+h(m1+m2)g for nmax(k1,k2),推理:多项式a0+a1n+a2n2+arnr 是 O(nr).,26,例3,2n2+3n+4,n2渐进控制4、3n和2n2,按定理1.2.2,2n2+3n+4 是 O(n2).,27,定理:f是O(g),iff(如果且只要是)O(f)O(g).,推理:f是O(g),g是O(f),iff O(f)=O(g),这个推理和定理一样重要
8、,举一简单例子,cn2是O(n2),n2是O(cn2),O(cn2)=O(n2)f=an2+bn+c 是O(n2),n2是O(f),O(f)=O(n2),28,定义:渐进复杂性 asymptotic complexity 设算法的复杂性函数是f,那么O(f)叫做该算法的渐进复杂性。,例4,f=an2+bn+c,那么该算法渐进复杂性是O(f),即O(n2)。g=bn+c的渐进复杂性是O(g),即O(n)。,29,渐进复杂性的几个重要的类:O(1)f=c 是 O(c)=O(1)常数复杂性 O(logn)f=logn,log10n=lognlg10 对数复杂性 O(n)线性复杂性 O(nlogn)线
9、性对数乘积复杂性 O(n2)平方复杂性 O(n3)立方复杂性 O(cn)指数复杂性 O(n!)阶乘复杂性,后面一个包含前面一个(一个比一个高阶):O(1)O(logn)O(n)O(nlogn)O(n2)O(n3)O(cn)O(n!),30,证:O(nr)O(cn)nrcn 如果 rlognnlogc 但 是增函数,(r不是n的函数),不等式在nk后成立。nrcn 即,nr是O(cn),而cn不是O(nr)O(nr)O(cn),31,衡量两个算法的好坏,应当是在n足够大的情形下,对算法的工作量进行比较。,32,函数增长表:,一般情况下,随着n的增大,增长较慢的算法为最优的算法。,应该选择对数阶或
10、多项式阶的算法,避免使用指数阶的算法。,33,进一步分析可知,要比较两个算法的渐近复杂性的阶不相同时,只要确定出各自的阶,就可以知道哪一个算法的效率高。,换句话说,渐近复杂性分析只要关心 的阶就够了,不必关心包含在 中的常数因子。所以,我们常常可对 的分析进一步简化,即假设算法中用到的所有不同的运算(基本)各执行一次所需要的时间都是一个单位时间。,34,2.3,复杂性函数的阶,-求解函数的上界“O”,下界“”,同阶“”,35,根据以上分析,我们已经给出了简化算法复杂性分析的方法和步骤,即只考虑当问题的规模充分大时,算法复杂性在渐近意义下的阶。,为此引入渐近符号,首先给出常用的渐近函数。在下面的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 函数 渐进 复杂性
链接地址:https://www.31ppt.com/p-6093697.html