算法效率基础_第1页
算法效率基础_第2页
算法效率基础_第3页
算法效率基础_第4页
算法效率基础_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

2-算法效率分析基础陆伟CollegeofSoftwareandMicroelectronics算法设计与分析IntroductiontotheDesignandAnalysisofAlgorithms

19January2023NorthwesternPolytechnicalUniversityLectureOverview1.算法效率的度量

2.函数的渐进的界3.算法的基本复杂性类型4.

算法复杂性分析的基本方法5.非递归算法的复杂性分析6.递归算法的复杂性分析7.递归算法与非递归算法比较8.经验分析方法9.算法可视化2算法效率的度量算法效率的高低体现在运行该算法所需要耗费资源的多少,对于计算机来讲,最重要的资源是时间和空间,因此,算法效率又可分为时间效率和空间效率。分别用N,I和A表示要解决问题的规模、算法的输入和算法本身,用C表示复杂性,那么,应该有C=F(N,I,A)。如果吧时间复杂性与空间复杂性分开,分别用T和S表示,则T=F(N,I,A),S=F(N,I,A)。T=T(N,I),S=S(N,I)。3算法效率的度量计算机存储容量的发展使得算法空间复杂性已经不再是关注的重点,但时间复杂性仍然十分重要。因此,我们后续也将主要讨论算法的时间复杂性,但是所讨论的方法对于空间复杂性分析也是适用的。根据T=T(N,I)的概念,它应该是算法在一台“抽象的计算机”上运行所需要的时间。4算法效率的度量设该“抽象的计算机”所提供的元运算有k种,分别记为O1,O2,…,Ok,又设每执行一次这些元运算所耗费的时间分别为t1,t2,…,tk。对于给定算法A,统计其执行过程中用到的元运算Oi的次数,记为ei,i=1,2,…,k。ei=ei(N,I)。其中,ti是与N和I无关的常数。5算法效率的度量我们不可能对规模为N的每一种合法输入I都去统计ei(N,I),i=1,2,…,k。关于摊销效率6函数的渐进的界函数的渐进的界设f和g是定义域为自然数集N上的函数(1)f(n)=O(g(n))若存在正数c和n0使得对一切n≥n0有0≤f(n)≤cg(n)(2)f(n)=Ω(g(n))若存在正数c和n0使得对一切n≥n0有0≤cg(n)≤f(n)(3)f(n)=o(g(n))对任意正数c存在n0使得对一切n≥n0有0≤f(n)<cg(n)(4)f(n)=ω(g(n))对任意正数c存在n0使得对一切n≥n0有0≤cg(n)<f(n)(5)f(n)=Θ(g(n))⇔f(n)=O(g(n))且f(n)=Ω(g(n))(6)O(1)表示常数函数7函数的渐进的界8函数的渐进的界函数渐进的界的基本性质(1)设f和g

是定义域为自然数集N上的函数:(1)若,c为大于0的常数,那么

f(n)=Θ(g(n))

(2)若,那么

f(n)=o(g(n))(3)若,那么

f(n)=ω(g(n))9函数的渐进的界函数渐进的界的基本性质(2)设f,g,h

是定义域为自然数集N上的函数:(1)如果f=O(g)且g=O(h),那么f=O(h).(2)如果f=Ω(g)且g=Ω(h),那么f=Ω(h).(3)如果f=Θ(g)和g=Θ(h),那么f=Θ(h).(4)O(f(n))+O(g(n))=

O(max{f(n),g(n)})(5)O(f(n))+O(g(n))=

O(f(n)+g(n))(6)O(f(n))*O(g(n))=

O(f(n)*g(n))10函数的的渐进进的界界函数渐渐进的的界的的基本本性质质(3)设f,g,h是定义义域为为自然然数集集N上的函函数,,若对对某个个其它它的函函数h,我们有有f=O(h)和g=O(h),那么么f+g=O(假设f和g是定义域为自然数集合的函数,且满足g=O(f),那么f+g=Θ(f).11函数的的渐进进的界界例:多项式式函数数f(n)=a0+a1n+a2n2+…+adnd,其中中ad≠0,证明明f(n)=Θ(nd)。证明。证明log对于b>1和α>0,logbn=o(nα),nα=o(bn)。n!=o(nn),n!=ω(2n),log(n!)=Θ(nlogn)12算法的的基本本复杂杂性类类型13算法复复杂性性分析析的基基本方方法(1)决定定表示示输入入规模模的参参数。。(2)找出出算法法的基基本操(3)检查基本操作的执行次数是否只依赖于输入规模。如果还依赖于输入的其它特性,考虑最差、平均以及最优情况下的复杂性。(4)对于非递归算法,建立算法基本操作执行次数的求和表达式;对于递归算法,建立算法基本操作执行次数的递推关系及其初始条件。。(5)利用求和公式和法则建立一个操作次数的闭合公式,或者求解递推关系式,确定增长的阶。14非递归归算法法的复复杂性性分析析对于等等差数数列{ak},对于等等比数数列{aqk},对于调调和级级数{1/k},对数求求和,,15非递归归算法法的复复杂性性分析析例16算法MaxElement(A[0..n-1]//求给定定数组组中的的最大大元素素//输入::实数数数组组A[0..n-1]//输出::A中的最最大元元素maxval←A[0]fori←1ton-1doifA[i]>maxvalmaxval←A[i]returnmaxval非递归归算法法的复复杂性性分析析(1)算法法输入入规模模:可可以用用数组组元素素个数数n度量(2)基本操作::比较与赋值值两种,选择择比较(3)比较操作只只与输入规模模相关,不用用考虑最坏、、平均、最好好情况(4)建立基本操操作执行次数数求和表达式式(5)确定增长的的阶17非递归算法的的复杂性分析析18算法UniqueElements(A[0..n-1]//验证给定数组组中的元素是是否全部唯一一//输入:实数数数组A[0..n-1]//输出:如果A中的元素全部部唯一,返回回“true”,否则,返回回“false””fori←1ton-2doforj←←i+1ton-1doifA[i]=A[j]returnfalsereturntrue非递归算法的的复杂性分析析19template<classType>voidinsertion_sort(Type*a,intn){Typekey;//costtimesfor(inti=1;i<n;i++){//c1nkey=a[i];//c2n-1intj=i-1;//c3n-1while(j>=0&&a[j]>key){//c4sumoftia[j+1]=a[j];//c5sumof(ti-1)j--;//c6sumof(ti-1)}a[j+1]=key;//c7n-1}}非递归算法的的复杂性分析析20在最好情况下下,ti=1,for1i<n;在最坏情况下下,tii+1,for1递归算法的复复杂性分析21T(n)=an-1T(1)+(1)若取a=2,f(n)=O(1),汉诺塔问题题T(n)=O(2n-1)(2)若取a=1,f(n)=n-1,插入排序最最坏情况T(n)=O(n2)递归算法的复复杂性分析22T(n)=(1)若,ε>0,(2)若,,(3)若,,ε>0,递归算法的复复杂性分析当f(n)为常数时当f(n)=cn时23递归算法的复复杂性分析例24inthanoi(intn,inta,intb,intc){if(n=1)move(a,c);else{hanoi(n-1,a,c,b);move(a,c);hanoi(n-1,b,a,c);}}递归算法的复复杂性分析T(n)=T(n/3)+T(2n/3)+n25递归算法与非非递归算法比比较阶乘问题26递归算法与非非递归算法比比较27intfactorial(intn){if(n==0)return1;returnn*factorial(n-1);}intfactorial(intn){intfn=1;for(inti=2;i<=n;i++)fn=fn*i;returnfn;}递归算法与非非递归算法比比较Fibonacci数列28边界条件递归方程intfibonacci(intn){if(n<=1)returnn;returnfibonacci(n-1)+fibonacci(n-2);}递归算法与非非递归算法比比较29递归算法与非非递归算法比比较30staticintFibonacci2(intn){int[]a=newint[n];a[0]=1;a[1]=1;for(inti=2;i<n;i++){a[i]=a[i-1]+a[i-2];}returna[n-1];}递归算法与非非递归算法比比较31递归算法与非非递归算法比比较32并非所有递归归算法都有非非递归定义。。Ackerman函数Ackerman函数A(n,m)有两个独立的的整型变量m≥0和n≥0,定义如下::当一个函数及及它的一个变变量是由函数数自身定义时时,称这个函函数是双递归函数。递归算法与非非递归算法比比较Ackerman函数33A(n,m)的自变量m的每一个值都都定义了一个个单变量函数数:m=0时,A(n,0)=n+2m=1时,A(n,1)=A(A(n-1,1),0)=A(n-1,1)+2,A(1,1)=2故A(n,1)=2nm=2时,A(n,2)=A(A(n-1,2),1)=2A(n-1,2),A(1,2)=A(A(0,2),1)=A(1,1)=2,故A(n,2)=2n。m=3时,类似的可可以推出A(n,3)=经验分析法数学远远不是是万能的,即即使许多貌似似简单的算法法,有时也很很难用数学的的精确性和严严格性来分析析,尤其是在在做平均效率率分析的时候候。除了可以对算算法的效率做做数学分析以以外,另一种种主要方法是是对算法的效效率做实验和和经验分析。。34经验分析法35算法可视化参考36Summary9、静夜四无无邻,荒居居旧业贫。。。1月-231月-23Sunday,January1,202310、雨雨中中黄黄叶叶树树,,灯灯下下白白头头人人。。。。14:08:2814:08:2814:081/1/20232:08:28PM11、以我我独沈沈久,,愧君君相见见频。。。1月-2314:08:2814:08Jan-2301-Jan-2312、故人人江海海别,,几度度隔山山川。。。14:08:2814:08:2814:08Sunday,January1,202313、乍见翻翻疑梦,,相悲各各问年。。。1月-231月-2314:08:2814:08:28January1,202314、他乡生白白发,旧国国见青山。。。01一月月20232:08:28下下午14:08:281月-2315、比不了得得就不比,,得不到的的就不要。。。。一月232:08下下午1月-2314:08January1,202316、行行动动出出成成果果,,工工作作出出财财富富。。。。2023/1/114:08:2914:08:2901January202317、做前,能能够环视四四周;做时时,你只能能或者最好好沿着以脚脚为起点的的射线向前前。。2:08:29下午2:08下下午14:08:291月-239、没没有有失失败败,,只只有有暂暂时时停停止止成成功功!!。。1月月-231月月-23Sunday,January1,202310、很多事事情努力力了未必必有结果果,但是是不努力力却什么么改变也也没有。。。14:08:2914:08:2914:081/1/20232:08:29PM11、成功就就是日复复一日那那一点点点小小努努力的积积累。。。1月-2314:08:2914:08Jan-2301-Jan-2312、世间成事事,不求其其绝对圆满满,留一份份不足,可可得无限完完美。。14:08:2914:08:2914:08Sunday,January1,202313、不不知知香香积积寺寺,,数数里里入入云云峰峰。。。。1月月-231月月-2314:08:2914:08:29January1,202314、意志志坚强强的人人能把把世界界放在在手中中像泥泥块一一样任任意揉揉捏。。01一一月月20232:08:29下下午14:08:291月-2315、楚塞塞三湘湘接,,荆门门九派派通。。。。。一月232:08下下午午1月-2314:08January1,202316、少年十十五二十十时,步步行夺得得胡马骑骑。。2023/1/114:08:2914:08:2901January202317、空山新雨后后,天气晚来来秋。。2:08:29下午2:08下下午14:08:291月-239、杨柳散和和风,青山山澹吾虑。。。1月-231月-23Sunday,January1,202310、阅读一一切好书书如同和和过去最最杰出的的人谈话话。14:08:2914:08:2914:08

温馨提示

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

评论

0/150

提交评论