算法设计与分析第09章.ppt
《算法设计与分析第09章.ppt》由会员分享,可在线阅读,更多相关《算法设计与分析第09章.ppt(66页珍藏版)》请在三一办公上搜索。
1、南京邮电大学计算机学院 2008年3月,算法设计与分析,DeSign and Analysis of AlgorithmsIn C+,“十一五”国家级规划教材,陈慧南 编著,电子工业出版社,南京邮电大学计算机学院 2008年3月,第2部分 算法设计策略,南京邮电大学计算机学院 2008年3月,第9章 分支限界法,南京邮电大学计算机学院 2008年3月,9.1 一般方法9.2 求最优解的分枝限界法 9.3 带时限的作业排序 9.4 0/1背包 9.5 旅行商问题 9.6 批处理作业调度,南京邮电大学计算机学院 2008年3月,9.1 一般方法,南京邮电大学计算机学院 2008年3月,9.1.1
2、分枝限界法概述,采用广度优先产生状态空间树的结点,并使用剪枝函数的方法称为分枝限界法。按照广度优先的原则,一个活结点一旦成为扩展结点(E-结点)R后,算法将依次生成它的全部孩子结点,并将它们一一加入活结点表,此时R自身成为死结点。算法从活结点表中另选一个活结点作为E-结点。,南京邮电大学计算机学院 2008年3月,不同的活结点表形成不同的分枝限界法,分为:FIFO分枝限界法、LIFO分枝限界法和LC(least cost)分枝限界法。三种不同的活结点表,规定了从活结点表中选取下一个E-结点的不同次序。FIFO分枝限界法的活结点表是先进先出队列LIFO分枝限界法的活结点表是堆栈;LC分枝限界法的
3、活结点表是优先权队列,LC分枝限界法将选取具有最高优先级的活结点出队列,成为新的E-结点。,南京邮电大学计算机学院 2008年3月,例91(4-皇后问题)FIFO分枝限界法求解,南京邮电大学计算机学院 2008年3月,【程序91】分枝限界算法template struct Node T cost;Node*parent;,南京邮电大学计算机学院 2008年3月,templatevoid BranchBound(Node*t)LiveList*lst(mSize);Node*x,*E=t;do for(对结点E的每个不受限的孩子)x=new Node;x-parent=E;if(x是一个答案结点
4、)输出从x到 t的一条路径;return;lst.Append(x);,南京邮电大学计算机学院 2008年3月,if(lst.IsEmpty()cout“没有答案结点”;return;lst.Serve(E);while(1);,南京邮电大学计算机学院 2008年3月,9.1.2 LC分枝限界法,代价函数c()若X是答案结点,则c(X)是从根结点到X的搜索代价;若X不是答案结点且子树X上不含任何答案结点,则c(X)=;若X不是答案结点但子树X上包含答案结点,则c(X)等于子树X上具有最小搜索代价的答案结点的代价。,南京邮电大学计算机学院 2008年3月,相对代价函数g()衡量一个结点X的相对代
5、价一般有两种标准:在生成一个答案结点之前,子树X上需要生成的结点数目;在子树X上,离X最近的答案结点到X的路径长度。容易看出,如果采用标准,总是生成最小数目的结点;如果采用标准,则要成为E-结点的结点只是由根到最近的那个答案结点路径上的那些结点。,南京邮电大学计算机学院 2008年3月,南京邮电大学计算机学院 2008年3月,相对代价估计函数(.)(X)作为g(X)的估计值,用于估计结点X的相对代价,它是由X到达一个答案结点所需代价的估计函数。一般地,假定(X)满足如下特性:如果Y是X的孩子,则有(Y)(X)。代价估计函数(.)(X)是代价估计函数,它由两部分组成:从根到X的代价f(X)和从X
6、到答案结点的估计代价(X),即(X)=f(X)+(X)。一般而言,可令f(X)等于X在树中的层次。,南京邮电大学计算机学院 2008年3月,9.1.3 15谜问题,在一个44的方形棋盘上放置了15块编了号的牌,还剩下一个空格。问题要求对于任意给定的一种初始排列,通过一系列的合法移动,将给定的初始排列转换成目标排列。,南京邮电大学计算机学院 2008年3月,初始状态和目标状态,从任意初始状态,经一系列的空格移动,到达目标状态。空格可以最多有前、后、左和右四种移动方式。共有16!种不同的排列。这个状态空间树是相当大的。有必要判定当前到达的状态是否属于该状态空间树。,南京邮电大学计算机学院 2008
7、年3月,定理9-1 对给定的初始状态,当且仅当为偶数时,可以由此初始状态到达目标状态,其中,i和j分别是空格在棋盘上的行和列下标。,南京邮电大学计算机学院 2008年3月,15谜问题的部分状态空间树(FIFOBB),南京邮电大学计算机学院 2008年3月,15谜问题的部分状态空间树(LCBB),南京邮电大学计算机学院 2008年3月,9.2 求最优解的分枝限界法,南京邮电大学计算机学院 2008年3月,9.2.1 上下界函数,定义9-1 状态空间树上一个结点X的代价函数c()定义为:若X是答案结点,则c(X)为X所代表的可行解的目标函数值;若X为非可行解结点,则c(X)=;若X代表部分向量,则
8、c(X)是以X为根的子树上具有最小代价的结点代价。显然,这样定义的c(X)也是难以计算的,它的计算难度与求得问题最优解的难度相当定义9-2 函数u()和()分别是代价函数c()的上界和下界函数。对所有结点X,总有(X)c(X)u(X)。,南京邮电大学计算机学院 2008年3月,基于上下界函数的分枝限界法的限界方法 U的值可以按下列原则修正:如果X是答案结点,cost(X)是X所代表的可行解的目标函数值,u(X)是该子树上最小代价答案结点代价的上界值,则U=mincost(X),u(X)+,U;如果X代表部分向量,则U=minu(X)+,U。使用(X)U 剪除多余分枝。,南京邮电大学计算机学院
9、2008年3月,9.2.2 FIFO分枝限界法,templateNode*FIFOBB(Node*t,T,南京邮电大学计算机学院 2008年3月,lst.Append(x);if(x是一个答案结点 while(1);,南京邮电大学计算机学院 2008年3月,9.2.3 LC分枝限界法,【程序9-3】基于上下界的LC分枝限界法templateNode*LCBB(Node*t,T,南京邮电大学计算机学院 2008年3月,if(x是一个答案结点 while(1);,南京邮电大学计算机学院 2008年3月,9.3 带时限的作业排序,南京邮电大学计算机学院 2008年3月,9.3.1 问题描述,对于单处
10、理机的带时限作业排序问题,如果每个作业具有相同的处理时间,则可以用贪心法求解。如果每个作业的处理时间允许不同,带时限的作业排序问题可描述为:设有n个作业和一台处理机,每个作业所需的处理时间、要求的时限和收益可用三元组(ti,di,pi),0in表示,其中,作业i的所需时间为ti,如果作业i能够在时限di内完成,将可收益pi,求使得总收益最大的作业子集J。,南京邮电大学计算机学院 2008年3月,例91 设有带时限的作业排序实例:n=4,(p0,d0,t0)=(5,1,1),(p1,d1,t1)=(10,3,2),(p2,d2,t2)=(6,2,1)和(p3,d3,t3)=(3,1,1),求使得
11、总收益最大的作业子集J。,南京邮电大学计算机学院 2008年3月,9.3.2 分枝限界法求解,可变大小元组(x0,x1,xk)表示解,xi为作业编号。问题的显式约束为:xi0,1,n1且xixi+1(0in1),隐式约束为:对于选入子集J的作业(x0,x1,xk),存在一种作业排列使J中作业均能如期完成。问题的目标函数是作业子集J中所有作业所获取的收益之和,使得总收益最大的作业子集是问题的最优解。如果希望以最小值为最优解,则可以适当改变目标函数,将其改为未入选子集J的作业所导致的损失,即为:,南京邮电大学计算机学院 2008年3月,可变大小元组(x0,x1,xk)表示解,xi为作业编号。显式约
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 设计 分析 09

链接地址:https://www.31ppt.com/p-4935487.html