《分治专题讲座》PPT课件.ppt
《《分治专题讲座》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《分治专题讲座》PPT课件.ppt(52页珍藏版)》请在三一办公上搜索。
1、算法设计与分析,第二讲 分 治,目的 分治法的思想分治算法的设计方法将递归算法改写成迭代算法的一般方法 重点 分治法的抽象控制策略针对问题的抽象控制策略实现 难点将递归算法改写成迭代算法的一般方法和实现,2.1 基本策略,一、求解大规模问题的复杂性,二、化整为零、分而治之,Pn,p1n1,p2n2,pknk,s0,s1,sk,S,分解,分治,合并,三、分治法的抽象控制策略,设:原问题输入为an,简记为(1,n);子问题输入为apaq,1pqn,简记为(p,q)。,已知:SOLUTION;int divide(int,int);int small(int,int);SOLUTION conque
2、r(int,int);SOLUTION combine(SOLUTION,SOLUTION);,SOLUTION DandC(p,q)/*divide and conquer*/if(small(p,q)return conquer(p,q);else m=divide(p,q);return combine(DandC(p,m),DandC(m+1,q);,分治法的抽象控制算法,已知n个按非降次序排列的元素an,查找元素x是否在表中出现,若找到,返回其下标值,否则,返回一负数.,2.2 二分检索,一、问题,二、分治的思路,原问题:(n,a0,an-1,x),数据分组:a0ak-2 ak-1
3、akan-1,三个子问题:(k-1,a0,ak-2,x)(1,ak-1,x)(n-k,ak,an-1,x),int BinSearch1(p,q,x)int k=(p+q)/2;if(qak)return BinSearch1(k+1,q,x);,三、递归算法,四、计算复杂度,1.二元比较树,以有序表的中间元素为根节点的二分树,左子树上所有元素不比父节点元素值大,右子树上所有元素不比父节点元素值小,圆形接点称为内节点,对应成功检索的数据元素,二分检索树的深度:,二元比较树的深度:,方形接点称为外节点,对应不成功检索的数据子集,定理2.2 若n在区域2k-1,2k)中,则对于一次成功的检索,Bi
4、nSearch1至多作k次比较;而对于一次不成功的检索,或者作k-1次比较或者作k次比较。,成功检索最好情况:不成功检索最好情况:成功检索最坏情况:不成功检索最坏情况:,2.时间复杂度,平均情况分析,内部路径长度之和:I,5,2,7,1,3,6,8,4,9,外部路径长度之和:E,E=I+2n。,成功检索的平均比较次数:S(n)=(I/n)+1,不成功检索的平均比较次数:U(n)=E/(n+1),因为:U(n)=O(log n),所以:S(n)=O(log n),由此可得:S(n)=(1+1/n)U(n)-1,成功检索 不成功检索 最好 最坏 平均 最好 最坏 平均 O(1)O(log n)O(
5、log n)O(log n)O(log n)O(log n),二分检索的时间复杂度结论,定理2.3 设an含有n(n1)个不同元素,排序为a1an.又设用以比较为基础去判断是否xan的任何算法在最坏情况下所需的最小比较次数为FIND(n),那么,FIND(n)。,说明:任何以比较为基础的检索算法,最坏情况下的比较次数都不可能低于O(log n),因此,二分检索是最优的最坏情况算法。,3.以比较为基础检索的时间下界,思考题:1.请证明 E=I+2n 2.请证明 S(n)=(I/n)+1,2.3 找最大和最小元素,在n个不同元素的集合an中同时找出它的最大和最小元素.,一、问题,比较次数:2(n-
6、1),将语句1的体改写成 if(ai*max)*max=ai;else if(ai*min)*min=ai;,直接搜索的改进方法,三、实现分治的递归算法,集合只有一个元素时*max=*min=ai;,集合只有两个元素时 if(aiaj)*max=aj;*min=ai;else*max=ai;*min=aj;,集合中有更多元素时 分治:将原集合分解成两个子集,分别求两个子集的最大和最小元素,再合并结果。,递归算法,typedef struct ElemType max,min;SOLUTION;,SOLUTION MaxMin(i,j)SOLUTION s,s1,s2;if(i=j)s.max=
7、s.min=ai;return s;if(i=j-1)if(ai=s2.max)?(s.max=s1.max):(s.max=s2.max);(s1.min=s2.min)?(s.min=s1.min):(s.min=s2.min);return s;,时间复杂度,当n是2的幂时,即对于某个正整数k,n=2k,有,令t(n)表示MaxMin需要的元素比较次数,存在下列递推关系,t(n)=2t(n/2)+2=2(2t(n/4)+2)+2=4t(n/4)+4+2=2k-1t(2)+=2k-1+2k-2=3n/2-2,当元素的比较开销与整数比较开销相当时,将前两条if语句合并为:if(i=j-1)/
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 分治专题讲座 分治 专题讲座 PPT 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5470329.html