《算法设计与分析》第08章概要优秀PPT.ppt
《《算法设计与分析》第08章概要优秀PPT.ppt》由会员分享,可在线阅读,更多相关《《算法设计与分析》第08章概要优秀PPT.ppt(72页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、算法设计与分析算法设计与分析DeSign and Analysis of AlgorithmsIn C+“十一五十一五”国家级规划教国家级规划教材材 陈慧南陈慧南陈慧南陈慧南 编著编著编著编著电子工业出版社电子工业出版社电子工业出版社电子工业出版社 第第2部分部分算法设计策略算法设计策略 第第8章章回溯法回溯法 8.18.1一般方法一般方法一般方法一般方法 8.2n-8.2n-皇后皇后皇后皇后 8.38.3子集和数子集和数子集和数子集和数 8.48.4图的着色图的着色图的着色图的着色 8.58.5哈密顿环哈密顿环哈密顿环哈密顿环 8.60/18.60/1背包背包背包背包 8.78.7批处理作业
2、调度批处理作业调度批处理作业调度批处理作业调度 8.1一般方法一般方法 8.1.1基本概念基本概念解以向量形式表示:解以向量形式表示:(x0,x2,xn-1)规规定定每每个个xi取取值值的的约约束束条条件件称称为为显显式式约约束束(explicitconstraint)。)。对对给给定定的的一一个个问问题题实实例例,显显式式约约束束规规定定了了全全部部可可能能的的元元组组(候候选选解解),它它们们组组成成问问题题的的候候选选解解集集,被称为该问题实例的解空间(被称为该问题实例的解空间(solutionspace)。)。隐隐式式约约束束(implicitconstraint)给给出出了了判判定定
3、一一个候选解是否为可行解的条件。个候选解是否为可行解的条件。目目目目标标标标函函函函数数数数,也也也也称称称称代代代代价价价价函函函函数数数数(costcostfunctionfunction),用用用用来来来来衡衡衡衡量量量量每每每每个个个个可可可可行行行行解解解解的的的的优优优优劣劣劣劣。使使使使目目目目标标标标函函函函数数数数取取取取最最最最大大大大(或或或或最最最最小)值的可行解为问题的最优解。小)值的可行解为问题的最优解。小)值的可行解为问题的最优解。小)值的可行解为问题的最优解。状状状状态态态态空空空空间间间间树树树树(statestatespacespace)是是是是描描描描述述
4、述述问问问问题题题题解解解解空空空空间间间间的的的的树树树树形形形形 结结结结 构构构构。树树树树 中中中中 每每每每 个个个个 结结结结 点点点点 称称称称 为为为为 一一一一 个个个个 问问问问 题题题题 状状状状 态态态态(problemproblemstatestate)。假假假假如如如如从从从从根根根根到到到到树树树树中中中中某某某某个个个个状状状状态态态态的的的的路路路路径径径径代代代代表表表表了了了了一一一一个个个个作作作作为为为为候候候候选选选选解解解解的的的的元元元元组组组组,则则则则称称称称该该该该状状状状态态态态为为为为解解解解状状状状态态态态(solutionsolut
5、ionstatestate)。假假假假如如如如从从从从根根根根到到到到某某某某个个个个解解解解状状状状态态态态的的的的路路路路径径径径代代代代表表表表一一一一个个个个作作作作为为为为可可可可行行行行解解解解的的的的元元元元组组组组,则则则则称称称称该该该该解解解解状状状状态态态态为为为为答案状态答案状态答案状态答案状态(answerstate)(answerstate)。例例 0/1背包问题背包问题MM,n n;w wi i,p,pi i(x(x0 0,x,x1 1,x,x2 2,x,x3 3)显示约束:显示约束:显示约束:显示约束:x xi i00,11隐式约束:隐式约束:隐式约束:隐式约束
6、:xxi iw wi iMM目标函数:目标函数:目标函数:目标函数:xxi ip pi i当当当当n=3n=3时对应的状态空间时对应的状态空间时对应的状态空间时对应的状态空间树树树树树中总结点数树中总结点数树中总结点数树中总结点数2 2n n0 0 0 01 1 1 10 0 0 01 1 1 10 0 0 01 1 1 1 0 0 0 01 1 1 10 0 0 01 1 1 10 0 0 01 1 1 1 0 0 0 01 1 1 1第第第第1 1 1 1层层层层第第第第2 2 2 2层层层层第第第第3 3 3 3层层层层第第第第3 3 3 3层层层层 例例 0/1背包问题背包问题元素元素
7、元素元素a a0 0,a,a1 1,a,an-1n-1排序问题排序问题排序问题排序问题解向量(解向量(解向量(解向量(x x1 1,x,x2 2,x,xn-1n-1),),显示约束:显示约束:显示约束:显示约束:x xi i0,1,n-10,1,n-1且且且且x xi ixxj j(ij)(ij)隐式约束:隐式约束:隐式约束:隐式约束:x xi ixxj j(ij)(ij)无目标函数无目标函数无目标函数无目标函数(13,24,09)(13,24,09)树中总结点数树中总结点数树中总结点数树中总结点数n!n!8.1.2剪枝函数和回溯法剪枝函数和回溯法为为了了提提高高搜搜寻寻效效率率,在在搜搜寻寻
8、过过程程中中运运用用约约束束函函数数(constraintfunction),可可以以避避开开无无谓谓地地搜搜寻寻那那些些已知不含答案状态的子树。已知不含答案状态的子树。假假如如是是最最优优化化问问题题,还还可可运运用用限限界界函函数数(boundfunction)剪剪去去那那些些不不行行能能包包含含最最优优答答案案结结点点的的子子树树。约约束束函函数数和和限限界界函函数数的的目目的的是是相相同同的的,都都为为了了剪剪去去不不必必要要搜搜寻寻的的子子树树,削削减减问问题题求求解解所所需需实实际际生生成成的的状状态态结结点点数数,它它们们统统称称为为剪剪枝枝函函数数(pruningfunctio
9、n)。)。运运用用剪剪枝枝函函数数的的深深度度优优先先生生成成状状态态空空间间树树中中结结点点的求解方法称为回溯法(的求解方法称为回溯法(backtracking););广广度度优优先先生生成成结结点点,并并运运用用剪剪枝枝函函数数的的方方法法称称为为分枝限界法(分枝限界法(branch-and-bound)。)。【程序程序程序程序8 81 1】递归回溯法递归回溯法递归回溯法递归回溯法VoidRBacktrack(intk)/应以应以Rbacktrack(0)调用本函数调用本函数for(每个每个xk,使得使得xk T(x0,xk-1)&(Bk(x0,xk)if(x0,x1,xk)是一个可行解是
10、一个可行解)输出输出(x0,x1,xk);RBacktrack(k+1);T(x0,T(x0,xk-1),xk-1)代表代表xkxk全部可能取值全部可能取值约束函数约束函数 B Bk k(x0,(x0,xk),xk)部分向量部分向量(x0,(x0,xk-1),xk-1)代表从根到一个问题状态代表从根到一个问题状态Y Y的路径的路径 【程序程序程序程序8-28-2】迭代回溯法迭代回溯法迭代回溯法迭代回溯法VoidIBacktrack(intn)intk=0;while(k=0)if(还剩下尚未检测的还剩下尚未检测的xk,使得使得xk T(x0,xk-1)&Bk(x0,xk)if(x0,x1,xk
11、)是一个可行解是一个可行解)输出输出(x0,x1,xk);k+;elsek-;回溯法的效率分析回溯法的效率分析状态空间树种总结点数为:状态空间树种总结点数为:2n,n!,nn2n,n!,nnp(n)p(n)是是n n的多项式,是生成一个结点所需的时间的多项式,是生成一个结点所需的时间回溯算法的最坏状况时间困难度可达回溯算法的最坏状况时间困难度可达O(p(n)n!)O(p(n)n!)(或(或O(p(n)2n)O(p(n)2n)或或O(p(n)nn)O(p(n)nn))。)。蒙特卡罗方法(蒙特卡罗方法(蒙特卡罗方法(蒙特卡罗方法(MonteCarloMonteCarlo)。这种估计方法的)。这种估
12、计方法的)。这种估计方法的)。这种估计方法的基本思想是在状态空间树中随机选择一条路径基本思想是在状态空间树中随机选择一条路径基本思想是在状态空间树中随机选择一条路径基本思想是在状态空间树中随机选择一条路径(x0,(x0,x1,xnx1,xn1)1)。设。设。设。设X X是这条随机路径上,代表部分向是这条随机路径上,代表部分向是这条随机路径上,代表部分向是这条随机路径上,代表部分向量量量量(x0,x1,xk(x0,x1,xk1)1)的结点,假如在的结点,假如在的结点,假如在的结点,假如在X X处不受限制的处不受限制的处不受限制的处不受限制的孩子数目是孩子数目是孩子数目是孩子数目是mkmk,则认为
13、与,则认为与,则认为与,则认为与X X同层的其他结点不受限同层的其他结点不受限同层的其他结点不受限同层的其他结点不受限制的孩子数目也都是制的孩子数目也都是制的孩子数目也都是制的孩子数目也都是mkmk。整个状态空间树上将实际生成的结点数估计为整个状态空间树上将实际生成的结点数估计为整个状态空间树上将实际生成的结点数估计为整个状态空间树上将实际生成的结点数估计为m=1+m0+m0m1+m0m1m2+m=1+m0+m0m1+m0m1m2+【程序程序程序程序8-38-3】蒙特卡罗算法蒙特卡罗算法蒙特卡罗算法蒙特卡罗算法intEstimate(SType*x)intk=0,m=1,r=1;doSetTy
14、peS=xk|xk T(x1,xk 1)&Bk(x1,xk=true);if(!Size(S)returnm;r=r*Size(S);m=m+r;xk=Choose(S);k+;while(1);函数函数函数函数sizesizesizesize返回集合返回集合返回集合返回集合S S S S的大小;函数的大小;函数的大小;函数的大小;函数ChooseChooseChooseChoose从集合从集合从集合从集合S S S S中随机选择一个中随机选择一个中随机选择一个中随机选择一个 8.2n-皇后皇后 8.2.1问题描述问题描述n-n-皇皇后后问问题题要要求求在在一一个个n n n n的的棋棋盘盘上
15、上放放置置n n个个皇皇后后,使使得得它它们们彼彼此此不不受受“攻攻击击”。n-n-皇皇后后问问题题要要求求找找寻寻在在棋棋盘盘上上放放置置这这n n个个皇皇后后的的方方案案,使使得得它它们们中中任任何何两两个都不在同一行、同一列或同一斜线上。个都不在同一行、同一列或同一斜线上。8.2.2回溯法求解回溯法求解皇后问题皇后问题皇后问题皇后问题可可可可用用用用n-n-n-n-元元元元组组组组(x0,x0,x0,x0,x1,x1,x1,x1,xnxnxnxn1 1 1 1)表表表表示示示示n-n-n-n-皇皇皇皇后后后后问问问问题题题题的的的的解解解解,其其其其中中中中xixixixi表表表表示示示
16、示第第第第i i i i行行行行的的的的皇皇皇皇后后后后所所所所处处处处的的的的列列列列号号号号(0 xi(0 xi(0 xi(0 xin)n)n)n)。显显显显式式式式约约约约束束束束的的的的一一一一种种种种观观观观点点点点是是是是:Si=0,Si=0,Si=0,Si=0,1,1,1,1,n n n n1111,0i0i0i0in n n n。相相相相应应应应的的的的隐隐隐隐式式式式约约约约束束束束为为为为:对对对对随随随随意意意意0i,0i,0i,0i,j j j jn n n n,当当当当i i i i j j j j时,时,时,时,xixixixi xjxjxjxj且且且且 。此时的解
17、空间大小为。此时的解空间大小为。此时的解空间大小为。此时的解空间大小为nnnnnnnn。另另另另一一一一种种种种显显显显式式式式约约约约束束束束的的的的观观观观点点点点是是是是:Si=0,Si=0,Si=0,Si=0,1,1,1,1,n n n n1111,0i0i0i0in n n n,且且且且xi xi xi xi xj(0i,xj(0i,xj(0i,xj(0i,j j j jn,n,n,n,i i i i j)j)j)j)。相相相相应应应应的的的的隐隐隐隐式式式式约约约约束束束束为为为为:对对对对随随随随意意意意0i,0i,0i,0i,j j j jn n n n,当当当当i i i i
18、 j j j j时时时时,。与与与与此相对应的解空间大小为此相对应的解空间大小为此相对应的解空间大小为此相对应的解空间大小为n!n!n!n!。皇皇后后问问题题的的状状态态空空间间树树是是一一棵棵排排排排列列列列树树树树。排排列列树树有有n!个叶结点,遍历排列树的时间为个叶结点,遍历排列树的时间为(n!)。4 4 4 4皇后问题对应的排列图皇后问题对应的排列图皇后问题对应的排列图皇后问题对应的排列图 8.2.3 n-皇后算法皇后算法 【程序程序程序程序8-48-4】n-n-皇后问题的回溯算法皇后问题的回溯算法皇后问题的回溯算法皇后问题的回溯算法boolPlace(intk,inti,int*x)
19、/xk=i是否可行是否可行/判定两个皇后是否在同一列或在同一斜线上判定两个皇后是否在同一列或在同一斜线上for(intj=0;jk;j+)if(xj=i)|(abs(xj-i)=abs(j-k)returnfalse;returntrue;voidNQueens(intn,int*x)NQueens(0,n,x);voidNQueens(intk,intn,int*x)for(inti=0;in;i+)if(Place(k,i,x)xk=i;if(k=n-1)for(i=0;in;i+)coutxi;coutendl;elseNQueens(k+1,n,x);4 4皇后问题的两个可行解皇后问题
20、的两个可行解 其中一个可行解的回溯过程其中一个可行解的回溯过程 实际生成的树结点实际生成的树结点 8.2.4时间分析时间分析可可通通过过蒙蒙特特卡卡罗罗法法计计算算5次次试试验验中中实实际际须须要要生生成成的的结结点点数数的的平平均均值值为为1625。8-皇皇后后问问题题状状态态空空间间树树的结点总数是:的结点总数是:因因此此,须须要要实实际际生生成成的的结结点点数数目目大大约约占占总总结结点点数数的的1.55%。8.3子集和数子集和数 问题描述问题描述已已已已知知知知n n个个个个不不不不同同同同正正正正数数数数wiwi,0 0i in-1n-1,的的的的集集集集合合合合,求求求求该该该该集
21、集集集合合合合的的的的全全全全部部部部满满满满足足足足条条条条件件件件的的的的子子子子集集集集,使使使使得得得得每每每每个个个个子子子子集集集集中中中中的的的的正正正正数数数数之之之之和和和和等等等等于另一个给定的正数于另一个给定的正数于另一个给定的正数于另一个给定的正数MM。例例例例8 822设有设有设有设有n=4n=4个正数的集合个正数的集合个正数的集合个正数的集合W=w0,w1,w2,w3=(11,13,24,7)W=w0,w1,w2,w3=(11,13,24,7)和和和和整整整整数数数数M=31M=31,求求求求WW的的的的全全全全部部部部满满满满足足足足条条条条件件件件的的的的子子子
22、子集集集集,使使使使得得得得子子子子集集集集中中中中的的的的正正正正数数数数之之之之和和和和等等等等于于于于MM。8.3.2回溯法求解回溯法求解 解结构形式:可变长度元组和固定长度元组。解结构形式:可变长度元组和固定长度元组。解结构形式:可变长度元组和固定长度元组。解结构形式:可变长度元组和固定长度元组。可可可可变变变变长长长长度度度度元元元元组组组组(x0,x0,xk,xk1,xk1,xk),0 0knkn。元元元元组组组组的的的的每每每每个个个个重重重重量量量量的的的的取取取取值值值值可可可可以以以以是是是是元元元元素素素素值值值值,也也也也可可可可以以以以是是是是选选选选入入入入子子子子
23、集集集集的正数的下标。的正数的下标。的正数的下标。的正数的下标。固固固固定定定定长长长长度度度度n-n-元元元元组组组组(x0,x1,x0,x1,xn,xn1 1),xixi 0,1,0,1,0 0inin。xi=0 xi=0,表表表表示示示示wiwi未未未未选选选选入入入入子子子子集集集集,xi=1xi=1,表表表表示示示示wiwi入入入入选子集。选子集。选子集。选子集。称称这这种种从从n个个元元素素的的集集合合中中找找出出满满足足某某些些性性质质的的子子集集的的状状态态空空间间树树为为子子集集树树。子子集集树树有有2n个个解解状状态态,遍历子集树的时间为遍历子集树的时间为(2n)。约约束函
24、数:束函数:束函数:束函数:(约约定定定定w w w wi i i i为为正数按升序排列)正数按升序排列)正数按升序排列)正数按升序排列)Bk(x0,x1,xk)为为true,当且仅当当且仅当w w w w0 0 0 0,w,w,w,w1 1 1 1,w,w,w,wk-1k-1k-1k-1,w,w,w,wk k k k,w,w,w,wk+1k+1k+1k+1,w,w,w,wn-1n-1n-1n-1x x x x0 0 0 0,x,x,x,x1 1 1 1,x,x,x,xk-1k-1k-1k-1,x,x,x,xk k k k,x,x,x,xk+1k+1k+1k+1,x,x,x,xn-1n-1n-
25、1n-1下面令下面令下面令下面令ss部分和部分和 r r剩余和剩余和x x x xk k k k=1=1=1=1x x x xk k k k=0?=0?=0?=0?子集和数算法子集和数算法【程序【程序【程序【程序8 85 5】子集和数的回溯算法子集和数的回溯算法子集和数的回溯算法子集和数的回溯算法 voidvoidSumOfSubSumOfSub(float(floats,s,intintk,k,floatfloatr,r,int*int*x,x,floatfloatm,float*w)m,float*w)/s/s部分和部分和部分和部分和rr剩余和剩余和剩余和剩余和xk=1;xk=1;if(s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法设计与分析 算法 设计 分析 08 概要 优秀 PPT
限制150内