版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、l采用采用深度优先深度优先产生产生状态空间树状态空间树的结点,并使用的结点,并使用剪枝函数剪枝函数的的方法称为方法称为回溯法回溯法。l回溯法的基本做法是:回溯法的基本做法是:按按深度优先策略深度优先策略,从根结点出发,从根结点出发搜索搜索问题的问题的状态空间树状态空间树,求问题的求问题的可行解可行解或最优解或最优解。算法搜索至任一结点时,先判。算法搜索至任一结点时,先判断断以该结点为根的子树以该结点为根的子树是否包含问题的解。是否包含问题的解。如果肯定如果肯定不包含不包含,则跳过对该结点为根的子树的搜索,逐,则跳过对该结点为根的子树的搜索,逐层向其祖先结点层向其祖先结点回溯回溯;否则否则,进入
2、进入该子树,继续按深度优先策略搜索。该子树,继续按深度优先策略搜索。回溯法回溯法适用于适用于解一些解一些组合数相当大组合数相当大的问题。的问题。 回溯法要求问题的解向量具有回溯法要求问题的解向量具有n-n-元组元组( (x1,x2,xn) )的形式,每个解分量的形式,每个解分量xi从一个给定的集合从一个给定的集合S Si i取值。取值。l显式约束显式约束:规定每个规定每个xi取值的约束条件。取值的约束条件。(显式约束规定了问题的(显式约束规定了问题的候选解集候选解集解空间解空间)解空间:解空间:对于问题的一个实例,解向量满足对于问题的一个实例,解向量满足显式约束条件显式约束条件的所有多元组,构
3、成了该实例的一个解空间。的所有多元组,构成了该实例的一个解空间。通常情况下通常情况下,回溯法的回溯法的求解目标求解目标是在状态空间树上找出满足是在状态空间树上找出满足约束条件的约束条件的所有可行解所有可行解.l隐式约束隐式约束:给出了判定一个候选解是否为给出了判定一个候选解是否为可行解可行解的条件。的条件。为满足问题的解而对不同分量之间施加的约束。为满足问题的解而对不同分量之间施加的约束。例例8-1 ii+1xxaa一种方法:一种方法:l显式约束显式约束解空间大小为解空间大小为nnl隐式约束隐式约束ii+1xxaa另一种方法:另一种方法:l显式约束显式约束 解空解空间大小为间大小为n!l隐式约
4、束隐式约束ii+1xxaa注意:注意:同一个问题可以有多种表示同一个问题可以有多种表示,有些表示方法更简单,有些表示方法更简单,所需表示的状态空间更小,搜索方法更简单。所需表示的状态空间更小,搜索方法更简单。状态空间树状态空间树:描述描述问题问题解空间解空间的树形结构。的树形结构。树中每个结点称为一个树中每个结点称为一个问题状态问题状态;若从根到树中某个状态的路径代表一个若从根到树中某个状态的路径代表一个候选解候选解元组,则该元组,则该状态为状态为解状态解状态;若从根到某个解状态的路径代表一个若从根到某个解状态的路径代表一个可行解可行解元组,则该解元组,则该解状态为状态为答案状态答案状态;如果
5、求解的是如果求解的是最优化问题最优化问题,还要用目标函数衡量每个答案,还要用目标函数衡量每个答案结点,找出其中结点,找出其中目标函数目标函数取取最优值最优值的的最优答案结点最优答案结点。有有n!个叶结点(解状态)个叶结点(解状态)01211220022011012738510151349611161412如:(例如:(例8-18-1)n n个元素排序问题。个元素排序问题。若若n=3则则状态空间树状态空间树为:为:排序问题一般不排序问题一般不用回溯法求解用回溯法求解又如:又如:0-10-1背包问题。背包问题。若若n=3则则状态空间树状态空间树为一个完全二叉树:为一个完全二叉树:有有2n个解状态个
6、解状态101101012364570111101091013812 14015穷举搜索法穷举搜索法:l使用某种搜索方法,检查状态空间树中使用某种搜索方法,检查状态空间树中每个每个问题状态问题状态;l如果是如果是解状态解状态则用则用判定函数判定函数判定它是否是判定它是否是答案结点答案结点;l对于对于最优化问题最优化问题,搜索过程中还需对每个答案结点计算其,搜索过程中还需对每个答案结点计算其目标函数值,记录下其中最优者。目标函数值,记录下其中最优者。回溯法回溯法:l在在求解的过程中求解的过程中,随着搜索算法的进展,以,随着搜索算法的进展,以深度优先深度优先方式,方式,逐个生成逐个生成状态空间树中结
7、点;状态空间树中结点;l为提高搜索效率,在搜索过程中用为提高搜索效率,在搜索过程中用约束函数约束函数和和限界函数限界函数(统称(统称剪枝函数剪枝函数)来剪去不必要搜索的子树,减少问题求)来剪去不必要搜索的子树,减少问题求解所需解所需实际生成的实际生成的状态空间树结点数,从而避免无效搜索。状态空间树结点数,从而避免无效搜索。常用的常用的剪枝函数剪枝函数:用用约束函数约束函数剪去已知不含剪去已知不含答案状态(答案状态(可行解可行解)的子树;的子树;用用限界函数限界函数剪去得不到剪去得不到最优答案结点(最优答案结点(最优解最优解)的子树。的子树。回溯法解题的一个回溯法解题的一个显著特征显著特征是:在
8、是:在搜索过程中搜索过程中动态动态产生问题的解空间。产生问题的解空间。回溯法对解空间作深度优先搜索,因此,在一般情况下用递回溯法对解空间作深度优先搜索,因此,在一般情况下用递归方法实现回溯法。归方法实现回溯法。程序程序8-1 递归回溯算法框架递归回溯算法框架void RBacktrack (int k) for (每个每个xk,使得使得xk T(x0,.,xk-1)&(Bk(x0,.,xk) / T(x0,x1,.,xk-1)表示沿路径表示沿路径(x0,x1,.,xk-1)从根到某个问题状态从根到某个问题状态时,时,孩子结点孩子结点xk可取值的集合可取值的集合。/ Bk(x0,x1,.
9、,xk)为约束函数。若子树上不含任何答案状态,则为约束函数。若子树上不含任何答案状态,则为为false;否则;否则,为为true。if (x0,x1,.,xk)是一个可行解是一个可行解)/判断是否可行解判断是否可行解输出输出(x0,x1,.,xk); /输出可行解输出可行解RBacktrack(k+1);/深度优先进入下一层深度优先进入下一层 由于叶结点的孩子集合由于叶结点的孩子集合T( )为空集合,因此对于有限状态空为空集合,因此对于有限状态空间树,算法必能终止。间树,算法必能终止。采用树的非递归深度优先遍历算法,可将回溯法表示为一个采用树的非递归深度优先遍历算法,可将回溯法表示为一个非递归
10、迭代过程。非递归迭代过程。程序程序8-2 迭代回溯算法框架迭代回溯算法框架void IBacktrack(int n) int k=0; while (k=0) if (还剩下尚未检测的还剩下尚未检测的xk,使得使得xk T(x0,.,xk-1)&Bk(x0,.,xk) if (x0,x1,.,xk)是一个可行解是一个可行解) 输出输出(x0,x1,.,xk);/输出可行解输出可行解 k+;/深度优先进入下一层深度优先进入下一层 else k-;/回溯到上一层回溯到上一层 用用蒙特卡罗(蒙特卡罗(Monte Carlo)方法)方法估计回溯法处理实例时,估计回溯法处理实例时,实际生成的结
11、点数:实际生成的结点数:l在状态空间树中在状态空间树中,从根开始从根开始随机随机选择一条路径选择一条路径(x0,x1,.,xn-1);l假定搜索树中这条假定搜索树中这条随机选出的路径上随机选出的路径上,代表部分向量,代表部分向量(x0,x1,.,xk-1)的结点处不受限制的的结点处不受限制的孩子数目孩子数目,与,与同层的其他同层的其他路径上路径上的结点不受限制的的结点不受限制的孩子数目孩子数目一样,都是一样,都是mk;l则可以估计整个状态空间树上则可以估计整个状态空间树上实际生成的结点数实际生成的结点数为为: m=1+m0+m0m1+m0m1m2+.回溯法的时间通常取决于:状态空间树上回溯法的
12、时间通常取决于:状态空间树上实际生成的实际生成的那部分那部分问题状态的数目(即:问题状态的数目(即:结点总数结点总数)。)。程序程序8-3 蒙特卡罗算法蒙特卡罗算法do SetType S= xk | xk T(x1,.,xk-1)& Bk(x1,.,xk)=true; if (!Size(S) return m; r=r*Size(S);/r为第为第k层中未受限结点数的估计值层中未受限结点数的估计值 m=m+r;/m为状态空间树中结点总数的估计值为状态空间树中结点总数的估计值 xk=Choose(S); /从集合从集合S S中为中为xk随机选择一个值,向下生成随机路径随机选择一个值,
13、向下生成随机路径 k+;while (1);在nn格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于在nn格的棋盘上放置n个皇后,任何2个皇后不放在同一行或同一列或同一斜线上。1 2 3 4 5 6 7 812345678QQQQQQQQ 第一种显式约束观点:第一种显式约束观点:l显式约束:显式约束:xi=0,1,2, ,n-1l隐式约束:当隐式约束:当i j时,时, 1)不同列:不同列:xi xj 2)不处于同一正、反对角线:不处于同一正、反对角线:|i-j| |xi-xj|对应的解空间大小为:对应的解空间大小为:n
14、n 第二种显式约束观点:第二种显式约束观点:l显式约束:显式约束: 1)xi=0,1,2, ,n-1 2)不同列:不同列:xi xj (i j)l隐式约束:不处于同一正、反对角线:隐式约束:不处于同一正、反对角线:|i-j| |xi-xj| (i j)对应的解空间大小为:对应的解空间大小为:n!解向量:解向量:(x0, x1, , xn-1),其中其中xi表示第表示第i行的皇后所处的列号。行的皇后所处的列号。(采用第一种显式约束观点)设计约束函数:(采用第一种显式约束观点)设计约束函数: 对对0i,jk,当当i j时,要求时,要求xi xj且且|i-j| |xi-xj| 可得可得程序程序8-4
15、 求求n-皇后问题的全部可行解(见下页):皇后问题的全部可行解(见下页):一般称这种用于确定一般称这种用于确定n个元素的排列满足某些性质的状态空间树个元素的排列满足某些性质的状态空间树为为排列树排列树。(采用第二种显式约束观点的)(采用第二种显式约束观点的)4-皇后问题状态空间树皇后问题状态空间树见见P180 图图8-3程序程序8-4 n-8-4 n-皇后问题的回溯算法皇后问题的回溯算法bool Place(int k,int i,int *x)/约束函数(隐式)约束函数(隐式)/判断两皇后是否在同一列或斜线上判断两皇后是否在同一列或斜线上 for (int j=1;jk;j+) if (xj
16、=i)|(abs(xj-i)=abs(j-k) return false;/i为当前第为当前第k行皇后的列数行皇后的列数/xj为已选定的前面为已选定的前面 0k-1 行皇后的列数行皇后的列数 return true; void NQueens(int k,int n,int *x) for (int i=0;in;i+) /显式约束显式约束 if (Place(k,I,x)/约束函数(隐式)约束函数(隐式) xk=i; if (k=n-1) for (i=0;in;i+) coutxi“ ”; /输出一个可行解输出一个可行解 coutendl;else NQueens(k+1,n,x);/深度
17、优先进入下一层深度优先进入下一层 可求得可求得n-皇后问皇后问题的所有可行解题的所有可行解图图8-5 显示了显示了4-皇后问题得到第一个解的步骤皇后问题得到第一个解的步骤:QQQQQQQQQQQQQQQQQQ图图8-6 显示了显示了4-皇后问题在得到第一个答案状态时,实皇后问题在得到第一个答案状态时,实际生成的那部分状态空间树际生成的那部分状态空间树:(对比对比 图图8-3的状态空间树)的状态空间树)011131312313911142192030218242916313022158BBBBBBBans10ikxiwM图图8-8 子集和数问题(可变元组解)状态空间树子集和数问题(可变元组解)状
18、态空间树03123331239813431022313161415612112357每个问题状态都是一个解状每个问题状态都是一个解状态,代表一个候选解元组。态,代表一个候选解元组。10niiiw xM图图8-9 子集和数问题(固定长度元组解)状态空间树子集和数问题(固定长度元组解)状态空间树每个叶结点是一个解状态,每个叶结点是一个解状态,代表一个候选解元组。代表一个候选解元组。非叶结点代表部分向量。非叶结点代表部分向量。一般称这种从一般称这种从n个元素的集合中找出满足某些性质的子集的状态个元素的集合中找出满足某些性质的子集的状态空间树为空间树为子集树子集树。101101021826273031
19、 2601611010412132917 14015101101056711809110101920212425 22023103101程序程序8-5(见下页见下页)的)的前置条件前置条件: (若(若wi已按非减次序排列已按非减次序排列)和和后置条件后置条件:在以在以(x0,x1,.,xk)为根的子树上搜索答案结点。为根的子树上搜索答案结点。11100knkiiiiikii kiw xwMw xwM且110&(,MM)kniiiii kkw xwsrswsr(采用固定长度元组解采用固定长度元组解)每次选择)每次选择xk之前应判断是否满足之前应判断是否满足约束函数约束函数Bk(x0,x1
20、,.,xk):程序程序8-5 子集和数的回溯算法子集和数的回溯算法void SumOfSub(float s,int k,float r,int *x,float m,float *w)/s为已选择的元素和,为已选择的元素和,r为剩余元素和,为剩余元素和,k为当前层数(即将选择的元素下标)为当前层数(即将选择的元素下标)/m为子集数和,为子集数和,w为权值元组,为权值元组,x为解元组为解元组xk=1; if (s+wk=m) /xk=1若得到一个可行解若得到一个可行解 for (int j=0;j=k;j+) coutxj ;coutendl; else if (s+wk+wk+1=m)&am
21、p;(s+wk+1=m) /xk=0,同时约束函数,同时约束函数Bk+1为真为真 xk=0; SumOfSub(s,k+1,r-wk,x,m,w);/则沿右子树向第则沿右子树向第k+1层搜索层搜索 因因(s+wk)+(r-wk)=s+r值未变,因此省略判断。值未变,因此省略判断。由于进入第由于进入第k层之前,总满足前置条件:层之前,总满足前置条件:s+wk-1m且且s+rm。 而而进入第进入第n-1层(最后一层)又有层(最后一层)又有r=wn-1。因此必有。因此必有s+wn-1=s+r=m。所以,只要进入第所以,只要进入第n-1层,层,函数总能终止函数总能终止;否则不可能进入第;否则不可能进入
22、第n-1层。层。(例例8-3) 设有设有n=6个正数的集合个正数的集合W=5,10,12,13,15,18和和整数整数M=30,求,求W的所有元素之和为的所有元素之和为M的子集。的子集。10000011000101A010100,0,735,1,6815,2,585,2,5815,3,4615,4,3317,3,461B5,3,465,4,330,1,6810,2,580,2,5810,3,4610,4,3312,3,4612,4,3312,5,1801C0,3,4613,4,330,4,33A、B、C为三个答案状态(可行解)为三个答案状态(可行解)l设有n个作业的集合0,1,n-1,每个作业
23、有两项任务要求分别在2台设备P1和P2上完成。每个作业必须先在P1上加工,然后在P2上加工。P1和P2加工作业i所需的时间分别为ai和bi。作业i的完成时间fi(S)是指在调度方案S下,该作业的所有任务得以完成的时间,则是采用调度方案S的。 1n0ii)S(fn1)S(MFT(batch job schedule)(batch job schedule)问题要求确问题要求确定这定这n n个作业的最优作业调度方案使其个作业的最优作业调度方案使其MFTMFT最小。这最小。这等价于求使得所有作业的完成时间之和等价于求使得所有作业的完成时间之和最小的调度方案。最小的调度方案。 1n0ii)S(f)S(
24、FT 设有三个作业和两台设备,作业任务的处理时间为设有三个作业和两台设备,作业任务的处理时间为(a0,a1,a2)=(2,3,2)和(和(b0,b1,b2)=(1,1,3)。这三个作。这三个作业有业有6种可能的调度方案:种可能的调度方案:(0,1,2),(0,2,1),(1,0,2), (1,2,0),(2,0,1),(2,1,0),它们相应的完成时间之和分别是它们相应的完成时间之和分别是19,18,20,21,19,19。其中,最佳调度方案。其中,最佳调度方案S=(0,2,1)。在这一调度方案下,在这一调度方案下,f0(S)=3,f1(S)=7,f2(S)=8,FT=3+7+8=18。对于双机批处理作业调度问题,其可行解是n个作业所有可能的排列,每一种排列代表一种作业调度方案S,其目标函数是使FT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年光建一体化科技公司质量方针与目标管理制度
- 2026年光建一体化科技公司施工设备维护与保养管理制度
- 2026年光建一体化科技公司采购招标管理制度
- 2026江苏南京大学化学学院助理招聘备考题库带答案详解
- 2026江苏南京大学化学学院助理招聘备考题库带答案详解(巩固)
- 2025年物流统考试题及答案
- (2025年)食品添加剂知识测试试卷及答案
- 2026江苏南京大学化学学院博士后招聘备考题库参考答案详解
- 2026江苏南京大学化学学院博士后招聘备考题库及完整答案详解一套
- 2026江苏南京大学化学学院博士后招聘备考题库带答案详解(培优a卷)
- 电烘箱设备安全操作规程手册
- 2025福建省闽西南水资源开发有限责任公司招聘5人笔试参考题库附带答案详解
- 学堂在线 雨课堂 学堂云 积极心理学(下)自强不息篇 章节测试答案
- 以诺书999中英对照
- 2024-2025学年八年级数学开学摸底考试卷(北京专用)(解析版)
- 硅锰工艺培训
- 药流护理常规
- HGT 4205-2024《工业氧化钙》规范要求
- 原发性纤毛运动障碍综合征教学演示课件
- 月台施工方案
- 白血病医学知识培训
评论
0/150
提交评论