第六讲-分治-算法设计与分析课件.ppt
《第六讲-分治-算法设计与分析课件.ppt》由会员分享,可在线阅读,更多相关《第六讲-分治-算法设计与分析课件.ppt(77页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Algorithms Design Techniques and Analysis第六章 分 治Algorithms Design Techniques and Analysis本章主要内容本章主要内容分治基本概念引言 两个简单例子二分搜索合并排序分治范式分治策略解决的一些问题选择算法快速排序大整数乘法矩阵乘法最近点问题Algorithms Design Techniques and Analysis6.1 引言什么是分治算法形式?一个分治算法把问题实例划分成若干子实例(多数情况是分成两个);并分别递归地解决每个子实例;然后把这些子实例的解组合起来,得到原问题实例的解;Algorithms D
2、esign Techniques and Analysis寻找最大值和最小值 问题描述在一个整数组A1.n中,同时寻找最大值和最小值。为了简化问题,不妨假定n是2的整数幂。一种直接的算法如下1.xA1;yA12.for i2 to n3.if Aiy then yAi5.end for6.return(x,y)显然,由此方法显然,由此方法执行的元素比较执行的元素比较次数是次数是2n一一2是否存在更有效的算法是否存在更有效的算法?Algorithms Design Techniques and Analysis算法算法6.1 MINMAX输入输入:n个整数元素的数组A1.n,n为2的幂。输出输出
3、:(x,y):A中的最大元素和最小元素。1.minmax(1,n)过程 minmax(low,high)1.if high-low=1 then 数组只有2个值的情况 2.if AlowAhigh then return(Alow,Ahigh)3.else return(Ahigh,Alow)4.end if 5.else 6.mid(low+high)/2 7.(x1,y1)minmax(low,mid)8.(x2,y2)minmax(mid+1,high)9.xmin(x1,x2)10.ymax(y1,y2)11.return(x,y)12.end if Algorithms Design
4、 Techniques and Analysis算法分析设C(n)表示算法在由n个元素(n是2的整数幂)组成的数组上执行的元素比较次数。见P112 定理 6.1 设数组A1.n包含n个元素,其中n是2的幂,则仅用3n/2一2次元素比较就能够在数组A中找出最大和最小元素。Algorithms Design Techniques and Analysis6.2 二分搜索 问题描述在数组A1.n中搜索已知元素x基本思想将一个给定的元素x与一个已排序数组Alow.high.的中间元素做比较如果x Amid,则放弃Alow.mid,而对Amid+1.high重复实施相同的方法.Algorithms De
5、sign Techniques and Analysis算法分析 假设 为了求出算法的执行时间,我们计算元素间的比较次数,因为这是一个基本运算,也就是说,算法的执行时间与完成元素间比较次数是成比例的(见1.11.2节)。我们将假定每个三向比较当做一次比较来计算推导见P113 定理6.2算法BINARYSEARCHREC在n个元素组成的数组中搜索某个元素所执行的元素比较次数不超过logn+1。算法BINARYSEARCHREC的时间复杂性是O(logn)。算法递归深度为O(log n),并且由于每个递归层次需要(l)的空间,本算法所需的空间总量是(log n)。和递归算法相反,其迭代形式算法仅需
6、要(l)空间Algorithms Design Techniques and Analysis6.3 合并排序BOTTOMUPSORT:在每一层中,我们有已排序的序列对,同时它们两两被合并而得到较大的排序序列。沿着树一层一层向上继续这个过程,直到到达根为止,这最后的序列是已经排序好的。让我们从反向来考虑,是否能用自顶向下取代自底向上?Algorithms Design Techniques and Analysis算法算法6.3 Mergesort输入输入:n个元素的数组A1.n。输出输出:按非降序排列的数组A1.n。1.mergesort(A,1,n)过程 mergesort(A,low,h
7、igh)1.if lowhigh then2.mid(low+high)/23.mergesort(A,low,mid)4.mergesort(A,mid+1,high)5.MERGE(A,low,mid,high)6.end if Algorithms Design Techniques and AnalysisMERGESORT算法过程9452174612445679945224591746146749942552171746469944552211774466Success!MS(1,8)MS(1,4)MS(1,2)MS(1,1)M(1,1,1)MS(2,2)M(2,2,2)M(1,1,
8、2)MS(3,4)MS(3,3)M(3,3,3)MS(4,4)M(4,4,4)M(3,3,4)M(1,2,4)MS(5,8)MS(5,6)MS(5,5)M(5,5,5)MS(6,6)M(6,6,6)M(5,5,6)MS(7,8)M(7,7,8)M(7,7,7)M(8,8,8)M(5,6,8)MS(7,7)MS(8,8)M(1,4,8)Algorithms Design Techniques and AnalysisHow the algorithm works?这个调用链对应于树的前序遍历:访问根、左子树和右子树。计算却对应于树的后序遍历:访问左子树,右子树,最后是根。为了实现这个遍历,用一个
9、栈来存储每次调用过程的局部数据。在算法BOTPOMUPSORT中,合并是一层接一层进行的;而在算法MERGESORT中,合并是以后序遍历的方式进行的。两种算法的区别仅在于合并的次序,因此,当n是2的幂时,由算法MERGESORT执行的比较次数和算法BOTIOMUPSORT执行的次数相同。Algorithms Design Techniques and Analysis合并算法分析最大比较次数:Algorithms Design Techniques and Analysis合并算法分析如果n是任意的正整数(不必是2的幂),对于由算法MERGESORT执行的元素比较次数:定理6.3 算法MERG
10、ESORT对一个n个元素的数组排序所需的时间是(nlogn),空间是(n)。Algorithms Design Techniques and Analysis6.4 分治范式P117一般来说分治范式由以下的步骤组成划分步骤。在算法的这个步骤中,输入被分成p 1个部分,每个子实例的规模严格小于n,n是原始实例的规模。尽管比2大的其他小的常数很普遍,但P的最常用的值是2。治理步骤。如果问题的规模大于某个预定的阈值n。,这个步骤由执行P个递归调用组成,阈值是由算法的数学分析导出的组合步骤。这个步骤是组合P个递归调用的解来得到期望的输出值。Algorithms Design Techniques an
11、d Analysis一般而言,分治算法有以下形式如果实例I的规模是“小”的,则使用直接的方法求解问题并返回其答案,否则继续做下一步。把实例I分割成P个大小几乎相同的子实例I1,I2,.,Ip。对每个子实例Ij,1jp,递归调用算法,并得到P个部分解。组合P个部分解的结果得到原实例I的解,返回实例I的解。Algorithms Design Techniques and Analysis6.5 寻找中项和第k小元素 选择问题在一个包含n个元素的集合中寻找第k个最小元素。(中值是第n/2个最小元素)直接方法:对所有的元素排序并取出中间一个元素,这个方法需要(nlogn)时间,因为任何基于比较的排序过
12、程在最坏的情况下必须至少要花费这么多时间 Can we find an efficient method in optimal linear time?能否在最优线性时间内找到更快的算法?Algorithms Design Techniques and AnalysisSELECT 算法基本思想首先,如果元素个数小于预定义的阈值44,则算法使用直接的方法计算第k小的元素,至于如何选择阂值在以后的算法分析中将会清楚。下一步把n个元素划分成n/5组,每组由5个元素组成,如果n不是5的倍数,则排除剩余的元素,这应当不影响算法的执行。每组进行排序并取出它的中项即第三个元素接着将这些中项序列中的中项元素
13、记为mm,它是通过递归计算得到的。将数组A中的元素划分成三个数组:A1,A2,A3,其中分别包含小于、等于和大于mm的元素。最后,求出第k小的元素出现在三个数组中的哪一个,并根据测试结果,算法或者返回第k小的元素,或者在A1 or A3上递归。Algorithms Design Techniques and Analysis算法算法6.4 SELECT输入输入:n个元素的数组A1.n和整数k,1k n。输出输出:A中的第k小元素。1.select(A,1,n,k)过程过程 select(A,low,high,k)1.phigh-low+12.if p44 then 将A排序 return(Ak
14、)3.Let q=p/5.将A分成9组,每组5个元素。如果5不整除P,则排除剩余的元素4.将q组中的每一组单独排序,找出中项。所有中项的集合为M5.mmselect(M,1,q,q/2)mm 为中项集合的中项6.将Alow.high 分成三组:A1=a|amm7.case|A1|k:return select(A1,1,|A1|,k)|A1|+|A2|k:return mm|A1|+|A2|k:return select(A3,1,|A3|,k-|A1|-|A2|)8.end case Algorithms Design Techniques and Analysis例子为方便起见,让我们暂时
15、将算法中的阈值44改为一个较小的数6假设存在数组A1.25:8,33,17,51,57,49,35,11,25,37,14,3,2,13,32,12,6,29,32,54,5,16,22,23,7 我们要在数组A中找到第13个最小的元素Algorithms Design Techniques and Analysis例子8 17 11 25 14 3 2 13 12 6 5 16 22 23 7A115partition8 17 11 25 1432 13 12 65 16 22 23 7sort8 11 14 17 2523612 135 716 22 23median6 14 16part
16、ition8 11 32 13 12 6 5 71417 25 16 22 23discardAlgorithms Design Techniques and Analysis例子17 25 16 22 23A1115sort16 17 22 23 25Succeed!The result is A13=22Algorithms Design Techniques and Analysisselection算法分析所有围在矩形W 中的元素是小于或等于mm的,所有围在矩形x中的元素是大于或等于mm 的。设A1表示小于或等于mm的元素集,A3是大于或等于mm的元素集这个算法中,A1是严格小于mm的
17、元素集,A3是严格大于mm的元素集Algorithms Design Techniques and Analysis由于A1至少与w同样大,我们有因此由参数的对称性得到这样就为在A1和A3的元素个数建立了上界:即小于mm的元素的个数和大于mm的元素个数不能够超过大约0.7n(n的常分数倍)。Algorithms Design Techniques and Analysis时间复杂度算法的运行时间T(n)P112在算法中select过程的步骤1和步骤2耗费的时间都是(1)步骤3为(n)时间。由于对每组排序需要时间为常量,步骤4耗费(n)时间,步骤5所需的时间为T(n/5),步骤6需要(n)时间。
18、由以上的分析,步骤7耗费的时间至多是T(0.7n+1.2)。当n 44时,如果0.7n+1.2 0.75n-1这个不等式将成立。得出的结论为,对于n 44,步骤7所耗费的时间至多是T(0.75n)。Algorithms Design Techniques and Analysis时间复杂度这个分析蕴含着算法SELECT的运行时间有以下的递推式 定理6.4 在一个由n个元素组成的线序集合中提取第k小元素,所需的时间是(n),特别地,n个元素的中值可以在(n)时间找出。Algorithms Design Techniques and Analysis6.6 快速排序快速排序是另外一种排序算法,该排
19、序算法具有(nlogn)的平均运行时间这个算法优于MERGESORT算法的一点是它在原位上排序,即对于被排序的元素,不需要辅助的存储空间。Algorithms Design Techniques and Analysis6.6.1 划分算法基本思想设Alow.high是一个包含n个数的数组,并且x=Alow我们考虑重新安排数组A中的元素的问题,使得小于或等于x的元素在x的前面,随后x又在所有大于它的元素的前面经过数组中元素改变排列后,对于某个w,lowwhigh,x在Aw 中。例如,如果A=,3,9,2,7,1,8;则经过重新排列其中的元素后,得到 A=1,3,2,7,9,8 其中 w=4。5
20、5Algorithms Design Techniques and Analysis划分算法这种重排列行动也称为围绕x的拆分或划分,x称为主元或拆分元素。定义6.1 如果元素Aj既不小于Alow.j-1中的元素,也不大于Aj+1.high中的元素,则称其处在一个适当位置或正确位置。观察结论6.2 用x(x A)作为主元划分数组A后,x将处于一个正确位置。Algorithms Design Techniques and Analysis算法算法6.5 SPLIT输入:数组Alow.high.输出:(1)如有必要,输出按上述描述的重新排列的数组A。(2)划分元素Alow的新位置w。1.ilow2.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第六 分治 算法 设计 分析 课件
限制150内