数据结构窦延平版的讲义-时间复杂性_第1页
数据结构窦延平版的讲义-时间复杂性_第2页
数据结构窦延平版的讲义-时间复杂性_第3页
数据结构窦延平版的讲义-时间复杂性_第4页
数据结构窦延平版的讲义-时间复杂性_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、算法和算法分析1、算法:一个算法就是有穷规则的集合,其中的规则规定了一个解决某一个特定问题的运算 序列。2、算法的时间复杂性和空间复杂性: ·问题的规模(n):或大小。如:矩阵的阶数、图的结点个数、被分类序列的正整数个数 …… ·时间复杂性:算法的所需的时间和问题规模的函数。记为T(n)。当n->∞时的时间复杂 性,被称之为渐进时间复杂性。 ·空间复杂性:算法的所需的空间和问题规模的函数。记为T(n)。当n->∞时的时间复杂 性,被称之为渐进空间复杂性。 ·最坏情况下的时间复杂性和平均情况下的时间复杂性。 最坏情况下的时间复杂性: 平均情况下的时间复杂性:3、大O表示法: ·定义;如果存在着正的常数c和自然数n0,当n>=n0

时;有f(n)<=Cg(n)成立,则 称f(n)=O(g(n))。 在算法分析中,如果一个的算法的时间复杂性是O(g(n)),读作g(n)“级”的 或“阶”的。如:线性阶的、平方阶的、立方阶的……1、算法和算法分析 ·例1、设T(n)=(n+1)2

=n2+2n2+1<=n2+2n2+n2;在n=1时,等式成立,n>1时,<式成立选n0=1,c=4;T(n)<=4n2。所以,T(n)=O(n2) ·例2、设T(n)=3n3+2n2

选n0=0,c=5;T(n)<=5n3。所以,T(n)=O(n3)

同理:选n0=0,c=5;T(n)<=5n4。所以,T(n)=O(n4)???

注意:符合定义,但在算法分析中是没有意义的。

在算法分析中,通常所说的找到了时间复杂性的级别,是指找到了同样级别的最 简单的函数。 如:307n2、

n2/2、

n2都是同一级别的函数,最简单的函数是n2。所以, 307n2、

n2/2、

n2的级别都是O(n2)。f、g同级别:满足:f=O(g)且g=O(f), ·例3、设T(n)=3n!=O(2n)注意:f(n)=O(g(n))意味着找到了f(n)的一个最“紧贴”的上界g(n))。或者说找到了最低的上界。从算法的时间复杂性角度来看,象例2中的O(n4)是没有意义的。 1、算法和算法分析紧贴渐进界:设存在一个函数f(n)=O(g(n)),如果对于每一个函数h(n)都使得f(n)=O(h(n)),也使得g(n)=O(h(n)),就说g(n)是f(n)的紧贴渐进界。例如:f(n)=3n+5;f(n)=O(n)同样根据定义f(n)=O(n2)。但是,我们通常所讲的f(n)的紧贴渐进界是f(n)=O(n),而不是f(n)=O(n2)。这可用反证法加以证明。反证法:上例中g(n)=n。假设g(n)=n不是f(n)=3n+5的紧贴渐进界,那么必定存在一个函数h(n),使得f(n)=3n+5=O(h(n)),但g(n)!=h(n)。由于3n+5=O(h(n)),那么根据大O法的定义,必定存在二个正数c和n0,使得对于所有的n>=n0,3n+5=<ch(n)。很显然,对一切n>=0,有n=<3n+5,所以g(n)=<ch(n)。这样,根据大O法的定义有g(n)=O(h(n))。但这是同假设相矛盾的。因此,f(n)=O(n)是一个紧贴渐进界。关于更严格的“紧贴渐进界”的概念,请看一下的定义。1、算法和算法分析 ·时间复杂性分析的注意: 1、时间复杂性函数无时间单位。 2、上例采用的是均匀时间耗费。以简单语句的耗费时间为1。 3、如循环语句,条件:O(1)+THENORELSE后的语句的时间耗费之和。 4、循环语句,先里后外,逐步求和。4、时间复杂性的级别的判断:级别越低越好。 ·ifLimf(n)/g(n)=c;这里c是常数。f(n)、g(n)同级别。n->∞ ·ifLimf(n)/g(n)=0;这里c是常数。f(n)级别低。n->∞ ·ifLimf(n)/g(n)=∞;这里c是常数。g(n)级别低。n->∞ 如:Limlogn/n=LimLn(n)loge/n =Lim(loge/n)/1 =Limloge/n=0;logn级别低。注意:这里使用了罗彼特的求极限的法则。n->∞n->∞n->∞n->∞O(logn)

和O(n1/2)???1、算法和算法分析5、大Ω表示法: ·定义;如果存在着正的常数c和自然数n0,当n>=n0

时;有f(n)>=Cg(n)成立,则 称f(n)=Ω(g(n))。 ·例1、设T(n)=(n+1)2

=n2+2n2+1>=n2;在n为任何数时,所以,T(n)=Ω(n2) ·例2、设T(n)=3n3+2n2T(n)>=3n3。所以,T(n)=Ω(n3) 同理:T(n)>=5n2。所以,T(n)=Ω(n2)???

注意:符合定义,但在算法分析中是没有意义的。Ω:找尽可能高的下界。6、Θ表示法: ·定义;如果存在着正的常数c1、c2和自然数n0,当n>=n0

时;有 C1×g(n)<=f(n)<=C2×g(n)成立,则称f(n)=Θ(g(n))。 ·例1、设T(n)=(n+1)2=Θ(n2)1、算法和算法分析1。下述两个程序段的作用都是将数组inta〔n〕

的前n-1数组元素置为和其

数组元素的下标相同的值,且最后一个数组元素置为-1,即a〔n-1〕=-1。

两段程序那个好一些,那个差一些(从算法的时间复杂性角度考虑)A.

for(i=0;i<n-1;++i)a〔i〕=i;a〔n-1〕=-1;B.

for(i=0;i<n;++i){if(i==n-1)a[n-1〕=-1;elsea〔i〕=i;}解:程序A执行的语句次数为n次,而程序B执行的语句次数为2n次,故而程序B更好一些。时间省。

2。以下是计算n!的递归程序,求其时间复杂性的级别:intf(intn){intm;if(n<=1)m=1;elsem=n*f(n-1);returnm;}1、算法和算法分析解:根据上述程序的语句执行次数可得: 2 ifn=1 T(n)= T(n-1)+2else解本递归式可得:T(n)=2T(n-1)+2=2(2T(n-2)+2)+2=…=O(n)答:本程序的程序时间复杂性的级别是线性级的。3、将下列算法的时间复杂性的级别,按由低到高的顺序排成一列;O(n4),O(1),O(n3),O(n×n1/2),O(logn),O(nlogn),O(n1/2),O(n2),O(2n)解:由低到高的顺序为:O(1),O(logn),O(n1/2),O(n*logn),O(n*n1/2),O(n2),O(n3),O(n4),O(2n),1、算法和算法分析4、下面的算法为计算x的n次幂

的值(y=x^n),求其时间复杂性的级别,注意x和n都是正整数:。。scanf(“%d”,&x);scanf(“%d”,&n);y=x;while(n>1)

{y=y*x;n=n-1}

printf(“%d”,y);.解:考察各个语句的执行次数,并把他们相加,可得到该程序的时间复杂性级别为: T(n)=1+1+1+n+2n-2+1=O(n)111n2n-211、算法和算法分析111111Logn+2Logn+1Logn+1Logn+2Logn+1Logn+1Logn+1代价<=3()11、算法和算法分析解:将上一页的语句执行相加次数,可得到总的执行次数,故: T(n)=9logn+17=O(logn)算法的工作原理,可用求x55来加以说明: x55=x110111=x32+16+0+4+2+1来加以说明。程序的第一个while求出>=55的最小的2的正整数幂64,64/2可得到32,在程序的第二个while中用到它。在程序的第二个while中: 55-32=23得到x110111中的幂指数中的最左位的1 23-16=7得到x110111中的幂指数中的左起第二位的1 7-8<0得到x110111中的幂指数中的左起第三位的0 7-4=3得到x110111中的幂指数中的左起第4位的1 3-2=1得到x110111中的幂指数中的左起第5位的1 1-1=0得到x110111中的幂指数中的左起第6三位的1知道了上述求法之后,求x110111就很方便了:1、算法和和算法分析析解:知道道了上述求求法之后,,求x110111就很方便了了:先求x1,1*x=》y再求x11,x11=x10*x1=x10*x1=》y*y*x=》y再求x110,x110=x11*x11=》y*y其余,依次次类推。9、静夜四无无邻,荒居居旧业贫。。。12月-2212月-22Saturday,December24,202210、雨中黄叶叶树,灯下下白头人。。。05:52:5805:52:5805:5212/24/20225:52:58AM11、以我独沈久久,愧君相见见频。。12月-2205:52:5805:52Dec-2224-Dec-2212、故人江海别别,几度隔山山川。。05:52:5805:52:5805:52Saturday,December24,202213、乍见翻翻疑梦,,相悲各各问年。。。12月-2212月-2205:52:5805:52:58December24,202214、他乡乡生白白发,,旧国国见青青山。。。24十十二二月20225:52:58上上午05:52:5812月月-2215、比不不了得得就不不比,,得不不到的的就不不要。。。。十二月月225:52上上午午12月月-2205:52December24,202216、行动动出成成果,,工作作出财财富。。。2022/12/245:52:5805:52:5824December202217、做前,能能够环视四四周;做时时,你只能能或者最好好沿着以脚脚为起点的的射线向前前。。5:52:58上上午5:52上上午05:52:5812月-229、没有失败败,只有暂暂时停止成成功!。12月-2212月-22Saturday,December24,202210、很很多多事事情情努努力力了了未未必必有有结结果果,,但但是是不不努努力力却却什什么么改改变变也也没没有有。。。。05:52:5805:52:5805:5212/24/20225:52:58AM11、成功就是日日复一日那一一点点小小努努力的积累。。。12月-2205:52:5805:52Dec-2224-Dec-2212、世间成事,,不求其绝对对圆满,留一一份不足,可可得无限完美美。。05:52:5805:52:5805:52Saturday,December24,202213、不知香积寺寺,数里入云云峰。。12月-2212月-2205:52:5805:52:58December24,202214、意志志坚强强的人人能把把世界界放在在手中中像泥泥块一一样任任意揉揉捏。。24十十二二月20225:52:58上上午05:52:5812月月-2215、楚楚塞塞三三湘湘接接,,荆荆门门九九派派通通。。。。。十二二月月225:52上上午午12月月-2205:52December24,202216、少少年年十十五五二二十十时时,,步步行行夺夺得得胡胡马马骑骑。。。。2022/12/245:52:5805:52:5824December202217、空山新新雨后,,天气晚晚来秋。。。5:52:58上午午5:52上午午05:52:5812月-229、杨柳散散和风,,青山澹澹吾虑。。。12月-2212月-22Saturday,December24,202210、阅读一切好好书如同和过过去最杰出的的人谈话。05:52:5805:52:5805:5212/24/20225:52:58AM11、越是没有有本领的就就越加自命命不凡。12月-2205:52:5805:52Dec-2224-Dec-22

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论