您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > s-第5章_heaven-12
智能信息处理研究中心(RCIIP)1第5章回溯法潘海为asplainasthenoseonone'sface——显而易见智能信息处理研究中心(RCIIP)Pan2理解回溯法的深度优先搜索策略掌握用回溯法解题的算法框架(1)递归回溯最优子结构性质(2)迭代回溯贪心选择性质(3)子集树算法框架(4)排列树算法框架学习要点智能信息处理研究中心(RCIIP)Pan3通过应用范例学习回溯法的设计策略(1)装载问题;(2)批处理作业调度;(3)符号三角形问题(4)n后问题;(5)0-1背包问题;(6)最大团问题;(7)图的m着色问题(8)旅行售货员问题学习要点智能信息处理研究中心(RCIIP)Pan4实例哈尔滨走到罗马若完全不认识路,会怎样走回溯法哈尔滨罗马两类问题存在性问题优化问题智能信息处理研究中心(RCIIP)Pan5问题描述假定问题的解能表示成一个n-元组(X1,…,Xn),其中Xi取自某个有穷集Si。所有这些n-元组构成问题的解空间。假设集合Si的大小是mi,可能的元组数为m=m1m2…mn回溯法两类问题存在性问题求满足某些条件的一个或全部元组,如果不存在这样的元组算法应返回No;这些条件称为约束条件。优化问题给定一组约束条件,在满足约束条件的元组中求使某目标函数达到最大(小)值的元组。满足约束条件的元组称为问题的可行解。智能信息处理研究中心(RCIIP)Pan6对于许多问题,当需要找出它的解的集合或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法。回溯法回溯法的基本做法是搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种方法适用于解一些组合数相当大的问题,具有“通用解题法”之称。回溯法在问题的解空间树中,构造树的过程也是搜索的过程。按深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。智能信息处理研究中心(RCIIP)Pan7回溯法实例——罗密欧与朱丽叶问题迷宫是一些互相连通的交叉路口的集合,给定一个入口、一个出口。当从入口到出口存在通路时,输出选中的一条通路;否则,输出无通路存在。(a)交叉路口罗密欧(入口)朱丽叶(出口)4312756路口动作结果1向前进入22向左进入33向右进入44(死路)回溯进入33(死路)回溯进入22向前进入55(死路)回溯进入22向右进入66向左进入7(b)搜索过程智能信息处理研究中心(RCIIP)Pan8问题的解空间问题的解向量回溯法希望一个问题的解能够表示成一个n元式(x1,x2,…,xn)的形式。显约束对分量xi的取值限定。隐约束为满足问题的解而对不同分量之间施加的约束。解空间对于问题的一个实例,解向量满足显式约束条件的所有多元组,构成了该实例的一个解空间。注意同一个问题可以有多种表示,有些表示方法更简单,所需表示的状态空间更小(存储量少,搜索方法简单)。智能信息处理研究中心(RCIIP)Pan9针对所给问题,定义问题的解空间;确定易于搜索的解空间结构;以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。常用剪枝函数用约束函数在扩展结点处剪去不满足约束的子树;用限界函数剪去得不到最优解的子树。回溯法解题的一个显著特征是在搜索过程中动态产生问题的解空间。算法只保存从根结点到当前扩展结点的路径。如果解空间树中从根结点到叶结点的最长路径的长度为h(n),则回溯法所需的计算空间通常为O(h(n))。而显式地存储整个解空间则需要O(2h(n))或O(h(n)!)内存空间。回溯法的基本思想智能信息处理研究中心(RCIIP)Pan100-1背包问题给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?输入:C0,wi0,vi0,1≤i≤n输出:(x1,x2,…,xn),xi∈{0,1},满足智能信息处理研究中心(RCIIP)Pan110-1背包问题实例(1)物品个数为n=3(2)背包的容量为C=30(3)物品的重量分别为w={16,15,15}(4)物品的价值分别为p={45,25,25}问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?问题解空间:(x1,x2,x3){(1,1,1),(1,1,0),(1,0,1),(1,0,0),(0,1,1),(0,1,0),(0,0,1),(0,0,0)}智能信息处理研究中心(RCIIP)Pan120-1背包问题问题解空间:(x1,x2,x3){(1,1,1),(1,1,0),(1,0,1),(1,0,0),(0,1,1),(0,1,0),(0,0,1),(0,0,0)}解空间树——使用栈来构建智能信息处理研究中心(RCIIP)Pan13扩展结点:一个正在产生儿子的结点称为扩展结点生成问题状态的基本方法活结点:一个自身已生成但其儿子还没有全部生成的节点称做活结点死结点:一个所有儿子已经产生的结点称做死结点智能信息处理研究中心(RCIIP)Pan140-1背包问题问题:n=3,C=30,w={16,15,15},p={45,25,25}可行性约束函数:解空间树——可扩展结点,活结点,死结点(1,0,0)(0,1,1)智能信息处理研究中心(RCIIP)Pan150-1背包问题解空间树——可扩展结点,活结点,死结点(1,0,0)(0,1,1)定义(子集树)当所给的问题是从n个元素的集合S中找出满足某种性质的子集时,相应的解空间树称为子集树子集树通常有2n个叶结点,结点总数为2n+1-1遍历解空间树需要W(2n)问题解空间:(x1,x2,x3){(0,0,0),(0,1,0),(0,0,1),(1,0,0),(0,1,1),(1,0,1),(1,1,0),(1,1,1)}智能信息处理研究中心(RCIIP)Pan16生成问题状态的基本方法深度优先的问题状态生成法:如果对一个扩展结点R,一旦产生了它的一个儿子C,就把C当做新的扩展结点。在完成对子树C(以C为根的子树)的穷尽搜索之后,将R重新变成扩展结点,继续生成R的下一个儿子(如果存在)回溯法:为了避免生成那些不可能产生最佳解的问题状态,要不断地利用限界函数(boundingfunction)来处死那些实际上不可能产生所需解的活结点,以减少问题的计算量。具有限界函数的深度优先生成法称为回溯法智能信息处理研究中心(RCIIP)Pan170-1背包问题可行性约束函数限界函数(上界函数):Bound(i)实例(1)物品个数为n=4(2)背包的容量为C=7(3)物品的重量分别为w={3,5,2,1}(4)物品的价值分别为p={9,10,7,4}智能信息处理研究中心(RCIIP)Pan180-1背包问题实例以物品单位重量价值的递减序排序[4][3][2][1]sortedid233.54d5321w10974p2134id物品按照d的顺序装入——4,3,1,2产生一个非可行解(上界)—x=[1,0.2,1,1],价值22智能信息处理研究中心(RCIIP)Pan190-1背包问题①Backtrack(i=1)if:if:cw+w[1]=0+1=1=ccw=cw+w[1]=0+1=1cp=cp+p[1]=0+4=4[4][3][2][1]sortedid233.54d5321w10974p2134id②Backtrack(i=2)if:if:cw+w[2]=1+2=3=ccw=cw+w[2]=1+2=3cp=cp+p[2]=4+7=11③Backtrack(i=3)if:if:cw+w[3]=3+3=6=ccw=cw+w[3]=3+3=6cp=cp+p[3]=11+9=20④Backtrack(i=4)if:if:cw+w[4]=6+5=11=cif:Bound(5)=20bestpi=5cleft=c-cw=7-6=1b=cp=20whileifreturnb=20智能信息处理研究中心(RCIIP)Pan200-1背包问题①Backtrack(i=1)if:if:cw+w[1]=0+1=1=ccw=cw+w[1]=0+1=1cp=cp+p[1]=0+4=4[4][3][2][1]sortedid233.54d5321w10974p2134id②Backtrack(i=2)if:if:cw+w[2]=1+2=3=ccw=cw+w[2]=1+2=3cp=cp+p[2]=4+7=11③Backtrack(i=3)if:if:cw+w[3]=3+3=6=ccw=cw+w[3]=3+3=6cp=cp+p[3]=11+9=20④Backtrack(i=4)if:if:cw+w[4]=6+5=11=cif:Bound(5)=20bestp⑤Backtrack(i=5)if:(5n)bestp=cp=20return;Backtrack(i=5)结束⑥Backtrack(i=4)Backtrack(i=4)结束⑦Backtrack(i=3)进入右子树cw=cw-w[3]=6-3=3cp=cp-p[3]=20-9=11if:Bound(4)=19bestpi=4cleft=c-cw=7-3=4b=cp=11while:i=4=nw[4]=5cleftif:i=4=nb=b+p[4]/w[4]*cleft=11+10/5*4=19returnb=19智能信息处理研究中心(RCIIP)Pan21回溯法对解空间作深度优先搜索,因此,在一般情况下用递归方法实现回溯法。voidbacktrack(intt){if(tn)output(x);elsefor(inti=f(n,t);i=g(n,t);i++){x[t]=h(i);if(constraint(t)&&bound(t))backtrack(t+1);}}递归回溯智能信息处理研究中心(RCIIP)Pan22采用树的非递归深度优先遍历算法,可将回溯法表示为一个非递归迭代过程。voiditerativeBacktrack(){intt=1;while(t0){if(f(n,t)=g(n,t))for(inti=f(n,t);i=g(n,t);i++){x[t]=h(i);if(constraint(t)&&bound(t)){if(solution(t))output(x);elset++;}}elset--;}}迭代回溯智能信息处理研究中心(RCIIP)Pan23旅行售货员问题给定n个顶点的带权图G=(V,E),图中各边的权为正数,图中的一条周游路线是包括V中的每个顶点在内的一条回路,一条周游路线的费用是这条路线上所有边的权之和。旅行商问题(TravelingSalesperson)是要在图G中找出一条有最小费用的周游路线。此问题是NP完全问题。智能信息处理研究中心(RCIIP)Pan24旅行售货员问题实例13423061054解空间:1342306105420三条周游路径[1,2,4,3,1][1,3,2,4,1][1,4,3,2,1][……]约束函数:限界函数:智能信息处理研究中心(RCIIP)Pan25旅行售货员问题实例解空间树最优解:1,3,2,4,1AB1C2F3L4G4M3DH2N4I4O2EJ2P3K3Q2341342306105420智能信息处理研究中心(RCIIP)Pan26旅行售货员问题实例13423061054解空间树最优解:1,3,2,4,1AB1C2F3L4G4M3DH2N4I4O2EJ2P3K3Q2341342306105420定义(排列树)当所给的问题是确定n个元素满足某种性质的排列时,相应的解空间树称为排列树
本文标题:s-第5章_heaven-12
链接地址:https://www.777doc.com/doc-2856506 .html