2-算法效率分析基础.pptx
《2-算法效率分析基础.pptx》由会员分享,可在线阅读,更多相关《2-算法效率分析基础.pptx(39页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 2-算法效率分析基础算法效率分析基础陆伟College of Software and Microelectronics算法设计与分析算法设计与分析Introduction to the Design and Analysis of Algorithms 29 April 2022Northwestern Polytechnical UniversityLecture Overview1. 算法效率的度量 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无关的常数。51()(, )kiiiT N,It e N I算法效率的度量算法效率的度量 我们不可能对规模为N的每一种合法输入I都去统计ei(N, I
4、),i=1,2,k。 关于摊销效率6max11()max (, )max(, )(, *)NNkkiiiiI DI DiiTNT N It e N It e N Imin11()min (, )min(, )(, )NNkkiiiiI DI DiiTNT N It e N It e N Iavg11()( ) (, )( )(, )(, )NNkkiiiiI DI DiiTNP I T N IP It e N It e N I 函数的渐进的界函数的渐进的界 函数的渐进的界 设f 和g 是定义域为自然数集N上的函数(1) f(n)=O(g(n)若存在正数c和n0使得对一切nn0有0f(n)cg(
5、n)(2) f(n)= (g(n)若存在正数c和n0使得对一切nn0有0cg(n) f(n)(3) f(n)=o(g(n)对任意正数c存在n0使得对一切nn0有0f(n)cg(n)(4) f(n)=(g(n)对任意正数c存在n0使得对一切nn0有0cg(n)1和0,logbn=o(n),n=o(bn)。 n!=o(nn),n!= (2n),log(n!)= (nlogn)122log()non算法的基本复杂性类型算法的基本复杂性类型13算法复杂性分析的基本方法算法复杂性分析的基本方法(1)决定表示输入规模的参数。(2)找出算法的基本操作。(3)检查基本操作的执行次数是否只依赖于输入规模。如果还
6、依赖于输入的其它特性,考虑最差、平均以及最优情况下的复杂性。(4)对于非递归算法,建立算法基本操作执行次数的求和表达式;对于递归算法,建立算法基本操作执行次数的递推关系及其初始条件。(5)利用求和公式和法则建立一个操作次数的闭合公式,或者求解递推关系式,确定增长的阶。14非递归算法的复杂性分析非递归算法的复杂性分析 对于等差数列ak, 对于等比数列aqk, 对于调和级数1/k, 对数求和,15 1nkka0nkkaq11nkk1lognii非递归算法的复杂性分析非递归算法的复杂性分析 例16算法算法 MaxElement(A0.n-1/求给定数组中的最大元素/输入:实数数组A0.n-1/输出:
7、A中的最大元素maxval A0for i 1 to n-1 do if Ai maxval maxval Aireturn maxval非递归算法的复杂性分析非递归算法的复杂性分析(1)算法输入规模:可以用数组元素个数n度量(2)基本操作:比较与赋值两种,选择比较(3)比较操作只与输入规模相关,不用考虑最坏、平均、最好情况(4)建立基本操作执行次数求和表达式(5)确定增长的阶17非递归算法的复杂性分析非递归算法的复杂性分析18算法算法 UniqueElements(A0.n-1/验证给定数组中的元素是否全部唯一/输入:实数数组A0.n-1/输出:如果A中的元素全部唯一,返回“true”,否则
8、,返回“false”for i1 to n-2 do for ji +1 to n-1 do if Ai = Aj return falsereturn true非递归算法的复杂性分析非递归算法的复杂性分析19templatevoid insertion_sort(Type *a, int n) Type key; / cost times for (int i = 1; i =0 & ajkey ) / c4 sum of ti aj+1=aj; / c5 sum of (ti-1) j-; / c6 sum of (ti-1) aj+1=key; / c7 n-1 非递归算法的复杂性分析非
9、递归算法的复杂性分析20) 1() 1() 1() 1() 1()(7116115114321nctctctcncncncnTniiniinii在最好情况下,ti=1, for 1 i n;在最坏情况下,ti i+1, for 1 i 1OnT naT nf nnT(n)=an-1 T(1)+-2( )nn iiaf i(1)若取a=2,f(n)=O(1),汉诺塔问题 T(n)=O(2n-1)(2)若取a=1,f(n)=n-1,插入排序最坏情况 T(n)= O(n2)递归算法的复杂性分析递归算法的复杂性分析22(1)=1( )()+ ( )1OnT nnaTf nnbT(n)=log-1log
10、0(1)()bbnajjjnnTa fb(1)若 ,0,(2)若 , (3)若 , 0,log-( )= ()baf nO nlog( )= ()baT nnlog( )(log )baT nnn log( )= ()baf nnlog+( )= ()baf nn( )( ( )T nf n 递归算法的复杂性分析递归算法的复杂性分析 当f(n)为常数时 当f(n) = cn时231)(log1)()(loganOanOnTablog( )( )( log )()baO nabT nO nnabO nab递归算法的复杂性分析递归算法的复杂性分析 例24int hanoi(int n, int a
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 效率 分析 基础
限制150内