欢迎来到天天文库
浏览记录
ID:51573901
大小:544.50 KB
页数:38页
时间:2020-03-23
《算法效率分析基础知识概论.ppt》由会员上传分享,免费在线阅读,更多相关内容在PPT专区-天天文库。
1、2-算法效率分析基础陆伟CollegeofSoftwareandMicroelectronics算法设计与分析IntroductiontotheDesignandAnalysisofAlgorithms09September2021NorthwesternPolytechnicalUniversityLectureOverview1.算法效率的度量2.函数的渐进的界3.算法的基本复杂性类型4.算法复杂性分析的基本方法5.非递归算法的复杂性分析6.递归算法的复杂性分析7.递归算法与非递归算法比较8.经验分析方法9.算法可视化2算法效率的度量算法效
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算法效率的度量计算机存储容量的发展使得算法空间复杂性已经不再是关注的重点,但时间复杂性仍然十分重要。因此,我们后续也将主要讨论算法的时间复杂性,但是所讨论的方法对于空间复杂性
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是定义域为自
4、然数集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)5、(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(n6、)+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(h).假设f和g是定义域为自然数集合的函数,且满足g=O(f),那么f+g=Θ(f).11函数的渐进的界例:多项式函数f(n)=a0+a1n+a2n2+…+adnd,其中ad≠0,证明f(n)=Θ(nd)。证明。证明logan=Θ(logbn)。对于b>1和α>0,logbn=o(nα),nα=o(bn)。n!=7、o(nn),n!=ω(2n),log(n!)=Θ(nlogn)12算法的基本复杂性类型13算法复杂性分析的基本方法(1)决定表示输入规模的参数。(2)找出算法的基本操作。(3)检查基本操作的执行次数是否只依赖于输入规模。如果还依赖于输入的其它特性,考虑最差、平均以及最优情况下的复杂性。(4)对于非递归算法,建立算法基本操作执行次数的求和表达式;对于递归算法,建立算法基本操作执行次数的递推关系及其初始条件。。(5)利用求和公式和法则建立一个操作次数的闭合公式,或者求解递推关系式,确定增长的阶。14非递归算法的复杂性分析对于等差数列{ak},对于等8、比数列{aqk},对于调和级数{1/k},对数求和,15非递归算法的复杂性分析例算法MaxElement(A[0..n-1]//求给定数组中的最大元素
5、(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
6、)+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(h).假设f和g是定义域为自然数集合的函数,且满足g=O(f),那么f+g=Θ(f).11函数的渐进的界例:多项式函数f(n)=a0+a1n+a2n2+…+adnd,其中ad≠0,证明f(n)=Θ(nd)。证明。证明logan=Θ(logbn)。对于b>1和α>0,logbn=o(nα),nα=o(bn)。n!=
7、o(nn),n!=ω(2n),log(n!)=Θ(nlogn)12算法的基本复杂性类型13算法复杂性分析的基本方法(1)决定表示输入规模的参数。(2)找出算法的基本操作。(3)检查基本操作的执行次数是否只依赖于输入规模。如果还依赖于输入的其它特性,考虑最差、平均以及最优情况下的复杂性。(4)对于非递归算法,建立算法基本操作执行次数的求和表达式;对于递归算法,建立算法基本操作执行次数的递推关系及其初始条件。。(5)利用求和公式和法则建立一个操作次数的闭合公式,或者求解递推关系式,确定增长的阶。14非递归算法的复杂性分析对于等差数列{ak},对于等
8、比数列{aqk},对于调和级数{1/k},对数求和,15非递归算法的复杂性分析例算法MaxElement(A[0..n-1]//求给定数组中的最大元素
此文档下载收益归作者所有