算法分析与设计分治法ppt课件.ppt
《算法分析与设计分治法ppt课件.ppt》由会员分享,可在线阅读,更多相关《算法分析与设计分治法ppt课件.ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、算法分析与设计分治法ppt课件 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望第二章第二章 分治法分治法什么是分治法?什么是分治法?二分检索二分检索找最大和最小元素找最大和最小元素归并分类归并分类快速分类快速分类选择问题选择问题斯特拉森矩阵乘法斯特拉森矩阵乘法2.1 分治法的一般方法分治法的一般方法问题(N个输入)子问题1子问题2子问题k子问题1子问题2子问题k相同的类型不用再分就可求解合并分治策略分治策略DANDC的抽象化控制的抽象化控制Procedure DA
2、NDC(p,q)global n,A(1:n);integer m,p,q;/1pqn/if SMALL(p,q)then return(G(p,q)else mDIVIDE(p,q)/pmq/return(COMBINE(DANDC(p,m),DANDC(m+1,q)endifEnd DANDC判断输入规模判断输入规模q-p+1是否足够的小是否足够的小求解该规模问题解的函数求解该规模问题解的函数将两个子问题的解合成原问题将两个子问题的解合成原问题分割函数分割函数分治策略分治策略DANDC的计算时间的计算时间倘若所分成的两个子问题的输入规模大致相等,倘若所分成的两个子问题的输入规模大致相等,则
3、分治策略则分治策略DANDC的计算时间可表示为:的计算时间可表示为:T(n)=g(n)n足够小足够小2T(n/2)+f(n)否则否则说明:说明:T(n)是输入规模为是输入规模为n的分治策略的计算时间的分治策略的计算时间 g(n)是对足够小的输入规模能直接计算出答案的时间是对足够小的输入规模能直接计算出答案的时间 f(n)是是COMBINE解合成原问题的计算时间解合成原问题的计算时间2.2 二分检索二分检索问题描述问题描述n已知一个按已知一个按非降次序排列非降次序排列的元素表的元素表a1,a2,an,判定某个给定元素,判定某个给定元素x是否在该表是否在该表中出现,若是,则找出该元素在表中的位置,
4、中出现,若是,则找出该元素在表中的位置,并置于并置于j,否则,置,否则,置j为为0。一般解决方法一般解决方法(从头到尾查找一遍)(从头到尾查找一遍)a1a2a3a4anx成功和不成功的计算时间都是成功和不成功的计算时间都是n 二分检索原理二分检索原理将问题表示为:将问题表示为:I=(n,a1,an,x)选取一个下标选取一个下标k,可得到三个子问题:,可得到三个子问题:I1=(k-1,a1,ak-1,x)I2=(1,ak,x)I3=(n-k,ak+1,an,x)如果对所求解的问题(或子问题)所选的下标如果对所求解的问题(或子问题)所选的下标k都是中间元素的下标,都是中间元素的下标,k=(n+1)
5、/2,则由,则由此产生的算法就是此产生的算法就是二分检索算法二分检索算法。二分检索算法二分检索算法Procedure BINSRCH(A,n,x,j)integer low,high,mid,j,n;low1;highn if(n0)while(lowhigh)do mid(low+high)/2 /*取中间值*/case xAmid:lowmid+1 /*寻找后一半*/else:jmid ;return /*检索成功*/endcase j0 /*检索失败*/End BINSRCH二分检索算法实例二分检索算法实例假设在数组假设在数组A(1:9)中顺序放了以下中顺序放了以下9个元素:个元素:-1
6、5,-6,0,7,9,23,54,82,101要求检索的要求检索的x分别为:分别为:101,-14,82X=101Lowhighmid195697898999OKX=-14Lowhighmid195142111 2 1NOX=82Lowhighmid195697898OK二分检索算法正确性的证明二分检索算法正确性的证明用五个特性判断是否是一个算法用五个特性判断是否是一个算法n根据算法的描述,满足五个特性的才是算法根据算法的描述,满足五个特性的才是算法证明算法是否正确证明算法是否正确n如果如果n=0,则不进入循环,则不进入循环,j=0,算法终止,算法终止n否则就会进入循环与数组否则就会进入循环与
7、数组A中的元素进行比较中的元素进行比较n如果如果x=Amid,则,则j=mid,检索成功,算法终止,检索成功,算法终止n否则,若否则,若xA(mid),则缩小到,则缩小到A(mid+1)和和A(n)之间检索之间检索n按上述方式缩小检索区总可以在有限步内使按上述方式缩小检索区总可以在有限步内使lowhighn如果出现这种情况,说明如果出现这种情况,说明x不在不在A中,中,j=0,算法终止,算法终止二分检索算法所需的空间和时间二分检索算法所需的空间和时间所需空间所需空间n用用n个位置存放数组个位置存放数组A,还有,还有low,high,mid,x,j五个变量需要存储,五个变量需要存储,共需空间共需
8、空间n+5计算时间计算时间n对于计算时间,需要分别考虑以下几种情况:对于计算时间,需要分别考虑以下几种情况:w成功检索的最好情况和不成功检索的最好情况成功检索的最好情况和不成功检索的最好情况w成功检索的平均情况和不成功检索的平均情况成功检索的平均情况和不成功检索的平均情况w成功检索的最坏情况和不成功检索的最坏情况成功检索的最坏情况和不成功检索的最坏情况成功检索最好情况和不成功检索最好情况成功检索最好情况和不成功检索最好情况成功的检索共有成功的检索共有n种种不成功的检索共有不成功的检索共有n+1种种A(1)(2)(3)(4)(5)(6)(7)(8)(9)元素-15-6079235482101比较
9、次数3234132343334433344不成功的检索成功的检索二元比较树572134689内结点内结点,表示表示一次元素的一次元素的比较比较,存放已存放已个个mid值值外结点外结点,表示不成功表示不成功检索的一种情况检索的一种情况每一条路径表每一条路径表示一个元素的示一个元素的比较序列比较序列9-6-1505472382101二分检索的时间复杂度二分检索的时间复杂度定理定理2.2:若:若n在区域在区域2k-1,2k)中,则对于一次成功的检中,则对于一次成功的检索,二分检索索,二分检索至多至多作作k次比较,次比较,至少至少作作1次比较;而对于次比较;而对于一次不成功的检索,或者作一次不成功的检
10、索,或者作k-1次比较或者作次比较或者作k次比较。次比较。证明证明 考察以n个结点描述BINSRCH执行过程的二元比较树,所有成功检索都在内部结点处结束,而所有不成功检索都在外部结点处结束。由于n在区域2k-1,2k)中,因此,所有的内部结点在1,2,k级,而所有的外部结点在k和k+1级(根在1级)。就是说,成功检索在i级终止所需要的元素比较数是i,而不成功检索在i级外部结点终止的元素比较数是i-1。二分检索的时间复杂度二分检索的时间复杂度最坏情况下的成功检索计算时间最坏情况下的成功检索计算时间(logn)最坏情况下的不成功检索计算时间最坏情况下的不成功检索计算时间(logn)最好情况下的成功
11、检索计算时间最好情况下的成功检索计算时间(1)最好情况下的不成功检索计算时间最好情况下的不成功检索计算时间(logn)每种不成功的检索时间都为每种不成功的检索时间都为(logn)成功检索的平均比较次数由根到所有内部结点的距离之和称为内部路径长度I;由根到所有外部结点的距离之和称为外部路径长度E;E=I+2n令S(n)是成功检索的平均比较次数。找一个内部结点表示的元素所需的比较次数是由根到该结点的路径长度(即距离)加1。因此,S(n)=I/n+1到一个外部结点所需要的比较数是由根到该结点路径的长度。因此,U(n)=E/(n+1)由以上各公式可得 S(n)=(1+1/n)U(n)-1由于U(n)=
12、(logn),所以成功检索的计算时间S(n)也为(logn)二分检索在各种情况下的检索时间二分检索在各种情况下的检索时间计算时间最好平均最坏成功的检索(1)(logn)(logn)不成功的检索(logn)(logn)(logn)以比较为基础检索的时间下界以比较为基础检索的时间下界有有n个如下关系的元素个如下关系的元素:A(1)A(2)A(n),检索一给定检索一给定元素元素X是否在是否在A中出现中出现X:A(1)X:A(2)X:A(n)不成功不成功不成功不成功线性检索线性检索二分检索二分检索X:A(n+1)/2)X:A(3n+1)/4)X:A(n+1)/4)X:A(n)X:A(2n+1)/2+1
13、)X:A(2n+1)/2-1)X:A(1)不成功不成功不成功不成功不成功不成功不成功不成功不成功不成功不成功不成功不成功不成功不成功不成功以比较为基础检索的时间下界以比较为基础检索的时间下界定理定理2.3:设:设A(1:n)含有含有n(n1)个不同的元素,排序为个不同的元素,排序为A(1)A(2)max then maxAi endif if Aimax then maxAiElse if(Aimin then minAi endifendif算法的时间复杂度算法的时间复杂度改进前:改进前:2(n-1)改进后:最好改进后:最好n-1,最坏,最坏2(n-1),平均,平均3(n-1)/2可考虑用分
14、治策略来解决这个问题可考虑用分治策略来解决这个问题将任一实例将任一实例I=(n,A(1),A(n)分成一些较小的实例来分成一些较小的实例来处理。处理。I=(n,A(1),A(n)I1=(n/2,A(1),A(n/2)I2=(n-n/2,A(n/2+1),A(n)递归求取最大和最小元素递归求取最大和最小元素Procedure MAXMIN(i,j,fmax,fmin)integer i,j;global n,A(1:n)case :i=j:fmaxfminA(i):i=j-1:if A(i)2当当n=2k(k是某个正整数是某个正整数)时,有时,有T(n)=3n/2-2T(n)=2T(n/2)+2
15、=4T(n/4)+4+2=2k-1T(2)+(2+22+2i+2k-1)=2k-1+2k-2=3n/2-2 当n2时 与直接算法的比与直接算法的比较次数较次数2(n-1)相比,比较次数相比,比较次数减少了减少了25%。MAXMIN算法分析算法分析由于递归的调用,由于递归的调用,MAXMIN所需要的存储空间较多,递所需要的存储空间较多,递归调用也消耗了部分时间。归调用也消耗了部分时间。元素元素A(i)和和A(j)的比较与的比较与i和和j的比较时间相差不大时,过的比较时间相差不大时,过程程MAXMIN不可取。如果设过程不可取。如果设过程MAXMIN的频率计数为的频率计数为C(n),n=2k,k是一
16、个整数,并用是一个整数,并用i=j-1来代替来代替i=j和和i=j-1,有:,有:C(n)2n=22C(n/2)+3 n2当n2时,C(n)=2C(n/2)+3 =4C(n/4)+6+3 =2k-1C(2)+3(1+2+22+2i+2k-2)=2k+3*2k-1-3 =5n/2-3 当当n较大时,比较次数会远远大于直接比较算法较大时,比较次数会远远大于直接比较算法结论:如果数组结论:如果数组A的元素的元素间的比较远比整型变量间的比较远比整型变量的比较代价昂贵,则分的比较代价昂贵,则分治法产生效率较高的算治法产生效率较高的算法;反之,就得到一个法;反之,就得到一个效率较低的程序。效率较低的程序。
17、2.4 归并分类(排序)归并分类(排序)问题描述问题描述 给定一个含有给定一个含有n个元素个元素(或叫关键字或叫关键字)的集合,把它们按一的集合,把它们按一定的次序分类定的次序分类(如非降次序排序如非降次序排序)一般方法一般方法(插入法插入法)For j2 to n do 将将A(j)放到已分类集合放到已分类集合A(1:j-1)的正确位置上的正确位置上Repeat插入分类算法描述插入分类算法描述Procedure INSERTIONSORT(A,n)A(0)-for j2 to n do itemA(j);ij-1 while itemA(i)do A(i+1)A(i);ii-1 repeat
18、 A(i+1)item repeatEnd INSERTIONSORT数组元素数组元素的移动的移动插入排好插入排好序的值序的值可能执行可能执行0j 次次(j=2,3n)最坏情况的计算时间:最坏情况的计算时间:2+n=(n(n+1)/2)-1=(n2),最好情况,最好情况(n)分治策略设计分类算法分治策略设计分类算法I=(n,A(1),A(n)I1=(n-n/2,A(1),A(n/2)I2=(n-n/2,A(n/2+1),A(n)I=(n,A(1),A(n)MERGEProcedure MERGESORT(low,high)interger low,high if lowmid then for
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 分析 设计 分治 ppt 课件
限制150内