2算法的时间复杂性.ppt
《2算法的时间复杂性.ppt》由会员分享,可在线阅读,更多相关《2算法的时间复杂性.ppt(35页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2.算法的时间复杂性分析基础2.1影响问题求解时间的因素A:算法n:问题的规模I:输入数据复杂性的形式化表示T(A,n,I)对于特定算法,时间复杂性为:T(n,I)2.1时间复杂性函数T(N,I)是算法在一台抽象的计算机上运行所需的时间。设此抽象的计算机所提供的元运算有k种,他们分别记为O1,O2,.,Ok;设这些元运算每执行一次所需要的时间分别为t1,t2,.,tk。n对于给定的算法A,用到元运算Oi的次数为ei,i=1,2,.,k,很明显,对于每一个i,ei是n和I的函数,即ei=ei(n,I)。那么有:其中ti,i=1,2,.,k,是与N,I无关的常数。先看一个实例:改进冒泡如排序算法的
2、基本步骤如下:fori1ton-1doflag1forj1ton-idoifajaj+1then交换aj、aj+1flag0/*发生了交换*/ifflagthenbeak/*没有交换,排序结束*/enddo如果将ifajAmthenLI+1elseUm-1n规则规则7对于break语句。为了便于表达从循环体的中途跳转到循环体的结束,引入break语句。在时间复杂性分析时可以假设它不需要任何额外的时间。n规则规则8对于过程调用和函数调用语句,它们需要的时间包括两部分,一部分用于实现控制转移,另一部分用于执行过程(或函数)本身,这时可以根据过程(或函数)调用的层次,由里向外运用规则(l)-(7)进
3、行分析,一层一层地剥,直到计算出最外层的运行时间便是所求。如果过程(或函数)出现直接或间接的递归调用,则根据过程(或函数)的内涵建立起这些待定函数之间的递归关系得到递归方程。最后用求递归方程解的渐进阶的方法确定最坏情况下的复杂性的渐进阶。经验和技巧是非常重要的BUILD-MAX-HEAP(A)1heap-sizeAlengthA2forilengthA/2downto1n/2次3doMAX-HEAPIFY(A,i)归结到分析MAX-HEAPIFY(A,i)的时间例:建最大堆算法的复杂性分析MAX-HEAPIFY(A,i)1lLEFT(i)2rRIGHT(i)3iflheap-sizeAandA
4、lAi/与左孩子比较,不满足堆的条件4thenlargestl /记下较大者的下标5 elselargesti6ifrheap-sizeAandArAlargest7thenlargestr /与右孩子比较,不满足堆的条件8iflargesti9thenexchangeAiAlargest10MAX-HEAPIFY(A,largest)每层比较2次,整理时间与i的高度成正比。整理堆的实例有n个节点的堆,最大整理时间为2logn。粗略分析建堆的时间为nlogn,但似乎太不精确了。考察实例的建堆过程,总体比较时间为所有节点的整理时间之和,各层上的节点的整理时间是相同的。BUILD-MAX-HEAP
5、(A)1heap-sizeAlengthA2forilengthA/2downto13doMAX-HEAPIFY(A,i)i在第h层上,整理的时间与h成正比,用O(h)表示。第h层的节点数为n/2h+1整理时间为n/2h+1O(h)。建构堆的时间:复杂性的渐近性态的概念一个算法的时间复杂度(TimeComplexity)T(n)是该算法的时间耗费,是该算法所求解问题规模n的函数。当问题的规模n趋向无穷大时,时间复杂度T(n)的数量级(阶)称为算法的复杂性的渐近性态(渐进时间复杂度)。分析算法的时间复杂性的目的是为了比较完成同一功能的程序的算法之间的最主要的差别。如果两个算法执行步数分别是3n+
6、2,3n+20,时间复杂性至多相差一个常数倍。对于两个具有时间复杂性:2n,cn对于充分大的n,两者的复杂性差别是很大的。所以,我们要引进渐进性,用复杂性的阶描述算法的复杂性。2.2 复杂性的渐近性态设T(N)是关于算法A的复杂性函数。一般说来,当N单调增加且趋于时,T(N)也将单调增加趋于。对于T(N),如果存在T(N),使得当N时有:(T(N)-T(N)/T(N)0那么,我们就说T(N)是T(N)当N时的渐近性态,或叫T(N)为算法A当N的渐近复杂性,因为在数学上,T(N)是T(N)当N时的渐近表达式。T(N)是T(N)中略去低阶项所留下的主项。所以它无疑比T(N)来得简单。例如T(n)=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 时间 复杂性
限制150内