算法效率分析基础ppt课件.ppt
《算法效率分析基础ppt课件.ppt》由会员分享,可在线阅读,更多相关《算法效率分析基础ppt课件.ppt(47页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 主要内容:主要内容: 2.1 分析框架分析框架 2.2 渐进符号和基本效率类型渐进符号和基本效率类型 2.3 非递归算法的数学分析非递归算法的数学分析 2.4 递归算法的数学分析递归算法的数学分析 一般而言,对于一个算法的分析主要是对算法效率的分析,包括了衡量其运行速度的时间效率以及衡量算法运行需要占用空间大小的空间效率。对于早期的计算机来说,时间与空间都是极其珍贵的资源。半个世纪以来,硬件技术的发展大大提高了计算机的存储容量,使得存储容量的局限性对于算法的影响大大降低了。但时间效率并没有得到相同程度的提高。因此,算法的时间效率是算法分析中的关键部分。 一个显而易见的事实是:大部分算法的执行
2、时间随着输入量的增加而增大。例如在对一个数组进行排序时,数组越大,排序需要的时间就越长。因此从逻辑上来说,算法的效率应该是输入量的函数。 2.1.2 运行时间的度量单位 算法时间包括了编译该算法的时间以及运行该算法的时间。因此衡量算法时间的单位很自然的会想到用“秒”、“毫秒”等实际的时间单位。这对于算法的测试者而言是很直观的,但是存在的问题是:编译算法的时间与编译程序的好坏有关,即使只考虑算法运行时间,得到的时间也受到了运行该算法的计算机速度的影响。因此一个算法在某一台计算机上实现得到的时间对于其他的计算机是没有参考意义的。 统计算法每一步操作的执行次数不可行。统计算法中最重要的操作基本操作的
3、执行次数。 排序的基本操作:比较 矩阵乘法的基本操作:乘法 多项式求值的基本操作:乘法这样,我们建立起了一个算法事件效率的分析框架。它提出,对于输入规模为n的算法,我们可以统计它的基本操作执行次数,来对其效率进行度量。执行次数C(n)是输入规模n的函数,算法运行时间T(n)是执行次数的函数:Basic operation: the operation that contributes most towards the running time of the algorithm. T(n) copC(n)running timeexecution timefor basic operationN
4、umber of times basic operation is executedinput size 如果这个算法运行在一台比我们现有机器快如果这个算法运行在一台比我们现有机器快10倍的机器上,它运行得有多快?倍的机器上,它运行得有多快? 答案:答案:10倍倍 另外:假设另外:假设C(n)=1/2n(n-1),如果输入规,如果输入规模翻倍,该算法会运行多长时间?模翻倍,该算法会运行多长时间? 答案:大约需答案:大约需4倍倍 只要只要n的值不是非常小,就有:的值不是非常小,就有:22212121) 1(21)(nnnnnnC421)2(21)()2()()2(22nnnCcnCcnTnTop
5、op 小规模的输入在运行时间上不能区分高效小规模的输入在运行时间上不能区分高效的算法与低效的算法,要考虑对于大规模的算法与低效的算法,要考虑对于大规模输入时执行次数的增长次数。输入时执行次数的增长次数。n log2n nlog2n n2 n3 2n n! 10 3.3 3.310 102 103 103 3.6106102 6.6 6.6102 104 106 1.31030 3.610157103 10 1.0104 106 109105 17 1.7106 1010 1015 一个需要指数级操作次数的算法只能用来一个需要指数级操作次数的算法只能用来解决规模非常小的问题解决规模非常小的问题
6、算法最差效率:当输入规模为算法最差效率:当输入规模为n时,算法在最坏情时,算法在最坏情 况下的效率。况下的效率。 算法最优效率:当输入规模为算法最优效率:当输入规模为n时,算法在最理想情时,算法在最理想情况下的效率。况下的效率。 算法平均效率:在算法平均效率:在“随机随机”或或“典型典型”输入时(规模输入时(规模仍为仍为n),算法的效率。),算法的效率。 平均效率的研究方法:一般将规模为平均效率的研究方法:一般将规模为n的实例分为几的实例分为几种类型,在假设各种输入的概率分布,推导出基本操种类型,在假设各种输入的概率分布,推导出基本操作的平均次数。作的平均次数。 算法的时间效率与空间效率都是算
7、法输入量的算法的时间效率与空间效率都是算法输入量的函数。函数。 时间效率的衡量通过算法基本操作执行次数的时间效率的衡量通过算法基本操作执行次数的估计进行,而空间效率的衡量是通过算法运行估计进行,而空间效率的衡量是通过算法运行所占用额外的存储器资源量进行的。所占用额外的存储器资源量进行的。 有些算法时空复杂度在相同输入量下可能由于有些算法时空复杂度在相同输入量下可能由于具体输入值的不同而不同,因此需要考虑最好具体输入值的不同而不同,因此需要考虑最好情况下、最坏情况下以及一般情况下的算法时情况下、最坏情况下以及一般情况下的算法时间复杂度。间复杂度。 算法的分析框架关注的内容是当输入量很大,算法的分
8、析框架关注的内容是当输入量很大,趋向无穷的时候,算法的时间复杂度是如何增趋向无穷的时候,算法的时间复杂度是如何增长,即使用算法的时间复杂度的渐进表示法。长,即使用算法的时间复杂度的渐进表示法。 O(2n)O(n!) O(nn)常见的指数阶常见的指数阶O(1) O(logn) O(n) O(nlogn) O(n2)O(n3) maxval maxval=Ai return maxval 输入规模:输入规模:n 确定基本操作:是赋值运算还是比较运算确定基本操作:是赋值运算还是比较运算? 算法中执行最频繁的操作在算法中执行最频繁的操作在for循环中。循环体中存在循环中。循环体中存在两种操作:比较运算
9、两种操作:比较运算Aimaxval和赋值运算和赋值运算maxval=Ai。 每做一次循环都会进行一次比较,而赋值运算并不是,每做一次循环都会进行一次比较,而赋值运算并不是,我们应该把我们应该把比较运算比较运算作为该算法的基本操作作为该算法的基本操作 求基本操作的执行次数求基本操作的执行次数记记C(n)为比较运算的执行次数,则为比较运算的执行次数,则C(n)=111ni 于是,于是,C(n)=n-1(n)分析的一般步骤:分析的一般步骤:1、决定哪些参数作为输入规模的度量、决定哪些参数作为输入规模的度量2、找出算法的基本操作、找出算法的基本操作3、检查基本操作的执行次数是否只依赖于输入、检查基本操
10、作的执行次数是否只依赖于输入规模规模4、求出基本操作的表达式、求出基本操作的表达式5、确定基本操作执行次数的增长次数。、确定基本操作执行次数的增长次数。 继续新的例子之前,我们可以再复习一下算继续新的例子之前,我们可以再复习一下算法分析中常用的求和公式及法则。其中,使法分析中常用的求和公式及法则。其中,使用得特别频繁的是求和运算的两个基本法则用得特别频繁的是求和运算的两个基本法则 以及两个求和公式:以及两个求和公式: u、l分别是上下限整数,分别是上下限整数, 且且luuliiuliiaccauliiuliiuliiibaba)(ulilu11201212) 1(.21nnnniinini 考
11、虑一下元素唯一性问题:验证给定数组考虑一下元素唯一性问题:验证给定数组中的元素是否全部唯一。算法如下:中的元素是否全部唯一。算法如下: UniqueElements(A0n-1) /验证给定数组中的元素是否全部惟一验证给定数组中的元素是否全部惟一 /输入:数组输入:数组A0n-1 /输出:如果输出:如果A中的元素全部惟一,返回中的元素全部惟一,返回“true” /否则,返回否则,返回“false” for i0 to n2 do for ji+1 to n-1 do if Ai=Ajreturn false return true 本题中,输入规模:数组元素本题中,输入规模:数组元素n 基本操
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 效率 分析 基础 ppt 课件
限制150内