算法设计与分析 第六章分支界限法_第1页
算法设计与分析 第六章分支界限法_第2页
算法设计与分析 第六章分支界限法_第3页
算法设计与分析 第六章分支界限法_第4页
算法设计与分析 第六章分支界限法_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第六章

分支限界法2023/2/41计算机算法设计与分析分支限界法是最佳优先搜索法分支限界法就是最佳优先(包括广度优先在内)的搜索法。分支限界法将要搜索的结点按评价函数的优劣排序,让好的结点优先搜索,将坏的结点剪去。所以准确说,此方法应称为界限剪支法。分支限界法中有两个要点:(1)评价函数的构造;(2)搜索路径的构造。2023/2/42计算机算法设计与分析评价函数的构造评价函数要能够提供一个评定候选扩展结点的方法,以便确定哪个结点最有可能在通往目标的最佳路径上。一个评价函数f(d)通常可以由两个部分构成:⑴从开始结点到结点d的已有耗损值g(d),和⑵再从结点d到达目标的期望耗损值h(d)。即:f(d)=g(d)+h(d)通常g(d)的构造较易,h(d)的构造较难。2023/2/43计算机算法设计与分析搜索路径的构造在回溯法中,每次仅考察一条路径,因而只需要构造这一条路径即可:前进时记下相应结点,回溯时删去最末尾结点的记录。这比较容易实现。在分支限界法中,是同时考察若干条路径,那么又该如何构造搜索的路径呢?对每一个扩展的结点,建立三个信息:(1)该结点的名称;(2)它的评价函数值;(3)指向其前驱的指针;这样一旦找到目标,即可逆向构造其路径。用一个表保存准备扩展的结点,称为Open表。用一个表保存已搜索过的结点,称为Closed表。2023/2/44计算机算法设计与分析分支限界法的一般算法⑴计算初始结点s的f(s);[s,f(s),nil]放入Open;⑵while(Open≠Φ){⑶从Open中取出[p,f(p),x](f(p)为最小);⑷将[p,f(p),x]放入Closed;⑸若p是目标,则成功返回;否则⑹{产生p的后继d并计算f(d)

;对每个后继d有二种情况:①dClosed||dOpen;②dOpen&&dClosed。⑺{若([d,f’(d),p]Closed||[d,f’(d),p]Open)&&f(d)<f’(d),则删去旧结点并将[d,f(d),p]

重新插入到Open中;否则⑻将[d,f(d),p]

插入到Open中}}}。2023/2/45计算机算法设计与分析分支限界法求单源最短路径单源最短路径问题的评价函数的构造:g(d)定义为从源s到结点d所走的路径长度:g(d)=g(p)+C[p][d]这里p为d的前驱结点,C[p][d]为p到d的距离。h(d)定义为0。于是f(d)=g(d)。源s的评价函数f(s)=0。

评价函数的下界为0;上界初始时为∞,以后不断用取得的更短路径的长度来替代。2023/2/46计算机算法设计与分析分支限界法求最短路径举例12543102050100301060赋权图G初始时,将源[1,0,0]放入Open,Closed为空。Open表[1,0,0]Closed表取出[1,0,0]放入Closed;生成其后继[2,10,1]、[4,30,1]和[5,100,1],并依序放入Open。[1,0,0][5,100,1][4,30,1][2,10,1]取出[2,10,1]放入Closed;生成其后继[3,60,2],并依序插入Open。[2,10,1][3,60,2][4,30,1]取出[4,30,1]放入Closed;生成其后继[3,50,4]和[5,90,4],修订Open中已有的两个结点并依序排列。[4,30,1][5,90,4][3,50,4]取出[3,50,4]放入Closed;生成其后继[2,100,3]和[5,60,3],前者因劣于Closed中的[2,10,1]而被抛弃,后者修订了Open中的[5,90,4]。[3,50,4][5,60,3]取出[5,60,3],因其已经是目标结点,算法成功并终止。依据逆向指针可得最短路径为1→4→3→5。2023/2/47计算机算法设计与分析界限(Bounding)评价函数f(d)关系着算法的效率乃至成败。因为在大多数问题中f(d)只是个估计值,所以单靠f(d)是不够的。通常还要设计它的上下界函数U(d)和L(d)。L(d)≤f(d)≤U(d)。所谓分支限界法就是通过评价函数及其上下界函数的计算,将状态空间中不可能产生最佳解的子树剪去,减少搜索的范围,提高效率。因而更准确的称呼应是“界限剪支法”2023/2/48计算机算法设计与分析用分支限界法求TSPTSP是求排列的问题,不是仅找一条路径而已。因而需要对分支限界法的一般算法作些修改:(1)待扩展的结点如果在本路径上已经出现,则不再扩展,但若是在其他路径上出现过,则仍需要扩展。(2)新结点,无论其优劣,既不影响其它路径上的结点,也不受其它路径上的结点的影响。(3)依据上界函数决定结点是否可以剪去。2023/2/49计算机算法设计与分析分支限界法求排列⑴计算初始结点s的f(s);[s,f(s),nil]放入Open;⑵while(Open≠Φ){⑶从Open中取出[p,f(p),L];//L是路径已有结点⑷若f(p)≥U,则抛弃该路径;⑸若p是目标,则考虑修改上界函数值;否则⑹{将[p,f(p),L]放入Closed;⑺在该路径上扩展结点p;对每个后继d⑻{计算f(d);⑼若f(d)<U,则{L=L{p};

将[d,f(d),L]依序放入Open。}}}}2023/2/410计算机算法设计与分析分支限界法求TSP举例设有向图G=(V,E)的边的代价矩阵为C=[cij]。若不存在有向边<i,j>∈E,则定义cij=∞且规定cii=∞。不失一般性,设周游路线均以顶点1为起点。左下为一个有向图G的代价矩阵C。∞25403127

5∞1730251915∞61

95024∞6228710∞评价函数f(d)为1到d的代价减去已经过的边数。初始时f(1)=0;f(d)=f(p)+cpd–1,这里p是d的前驱。2023/2/411计算机算法设计与分析分支限界法求TSP的搜索∞25403127

5∞1730251915∞61

95024∞6228710∞102243394305262340453548523333243542793535453246437234946242843584286找到了一条周游路线1→5→3→4→2→1,其长度为95。这不是最短周游路线,需要修改上界后继续搜索。2023/2/412计算机算法设计与分析归约矩阵以及约数前面的搜索的效率不高,几乎要搜索全部的状态空间。其原因是评价函数以及上下界的估计太低。为了设计求解TSP问题的更好的评价函数,先定义其代价矩阵的归约矩阵和约数。给定代价矩阵C,从C的任何行i(或列i)的各元素中减去此行(或此列)的最小元素的值r(i)(或r’(i)),称为对i行(或i列)的归约。将C的各行和各列都归约后的矩阵称为C的归约矩阵。和数r=∑i≤nr(i)+∑i≤nr’(i)

称为C的约数。2023/2/413计算机算法设计与分析例子中的归约矩阵和约数计算前面例子中的归约矩阵及其约数如下:∞25403127

5∞1730251915∞61

95024∞6228710∞先做行归约:r(1)=25∞01562r(2)=50∞122520r(3)=11814∞50r(4)=634421∞0r(5)=715103∞再做列归约:r’(1)=r’(2)=r’(3)=r’(5)=0r’(4)=33222∞0约数r=47。2023/2/414计算机算法设计与分析约数是周游路线长度的下界定理:设C是图G的代价矩阵,P是周游路线,则P的代价,即∑<i,j>∈P

cij=r+∑<i,j>∈P

c’ij,

式中C’=[c’ij]是C的归约矩阵,r为约数。证明:由归约矩阵的构造可知:c’ij=cij–r(i)–r’(j)

即cij=c’ij+r(i)+r’(j)。任何周游路线包含n条边并且对应在C中的每行每列有且仅有一条边。于是∑<i,j>∈P

cij=∑<i,j>∈P(c’ij+r(i)+r’(j))。r+∑<i,j>∈P

c’ij

2023/2/415计算机算法设计与分析用约数定义期望函数h(d)既然约数是周游路线长度的下界,我们可以考虑用约数来定义期望函数h(d):对开始结点1,令g(1)=0,h(1)=r,f(1)=r。若从结点1选择了一条边,不妨设边<1,2>,则令g(2)=f(1)+从1到2的距离l,显然l应该是c’12,而不应该再是c12了。

那么h(2)=?自然可以想到h(2)是从2开始的路线的下界r2。是否可用类似求r一样去求新的约数r2呢?2023/2/416计算机算法设计与分析求新的约数r2可以。但在此之前应将边<1,2>和所有边<1,k>和边<k,2>都删去,即置c’12、c’1k和c’k2为∞。设C’p为某路线上结点p的归约矩阵。从p选择边<p,d>所得到结点d的归约矩阵C’d和约数rd为:(1)将C’p中的c’pd,c’pk和c’kd置为∞,1≤k≤n;(2)依照求归约矩阵C’的方法对C’p进行行归约和列归约,便得到了C’d和rd

。2023/2/417计算机算法设计与分析期望函数h(d)的定义应用约数,可以得到h(d)的定义如下:令f(1)=g(1)+h(1),其中g(1)=0,h(1)=r。对任意路线上的结点d,设p是其前驱结点,则

f(d)=g(d)+h(d),其中,g(d)=f(p)+C’p[p][d],h(d)=rd。2023/2/418计算机算法设计与分析用新的评价函数求TSP下面用新的评价函数求前面的例子,我们已经求得了它的归约矩阵C’和约数r=47。∞01532

0∞1222201814∞20

34418∞015100∞1472g(2)=47+0=47∞∞∞∞∞∞∞∞010801512h(2)=12+3=15f(2)=47+15=62623∞01532

0∞1222201814∞20

34418∞015100∞g(3)=47+15=62

∞∞∞∞∞∞∞∞04313h(3)=1f(3)=63634类似地可求出f(4)=51。515类似地可求出f(5)=50。50下面优先扩展的是结点5。2此时C’2是在C’5的基础上进行。右边就是C’5。∞∞∞∞∞

0∞1222∞1814∞2∞

34418∞∞

000∞g(2)=50+0=50∞∞∞∞∞01601503h(2)=17f(2)=67673类似地计算出f(3)=68684类似地计算出f(4)=8181下面扩展f(4)=51的结点4。并用同样方法计算它们的评价函数值。2121369464154下面要扩展的结点是f(2)=62的结点2。右边是其对应的归约矩阵C’2。2∞∞

∞∞∞010815∞∞20

0∞18∞012∞00∞3g(3)=62+0=62;对C’2进行归约,∞∞∞∞∞得h(3)=0;于是f(3)=62。62对结点2的另外两个儿子进行同样的计算,得:f(4)=84,f(5)=72。484572下面对f(3)=62的结点3进行扩展。它有两个后继结点。345对结点4,g(4)=62+2=64。∞∞∞∞0h(4)=12,于是f(4)=64+12=7676对结点5,g(5)=62+0=62。∞∞

∞∞∞∞

∞15∞∞20

0∞∞∞012∞∞0∞∞∞∞∞∞h(5)=0,于是f(5)=62+0=6262对结点5(f(5)=62)再进行扩展。54g(4)=62+0=62,∞∞h(4)=0,f(4)=62。62结点4是目标结点,找到了第一条路线。4这条路线的长度为62,以其为上界。其余未扩展的结点的评价函数值均超过上界,因而不再需要扩展了。××××××××××于是找到了一条最短的周游路线:1→2→3→5→4→1。2023/2/419计算机算法设计与分析分支边与二叉树在构造求TSP的搜索树时,还有另外一种算法稍有点不同,就是将搜索树构造成二叉树。给定一条最短周游路线P,对于任一条边<i,j>只有两种情况,即<i,j>P或者<i,j>P。这就可以表示成右边的二叉树:km<i,j>n____<i,j>其中____<i,j>表示<i,j>P。这样的边称为分支边。2023/2/420计算机算法设计与分析用二叉树求TSP1<2,1>250

____<2,1>3622<4,5>453

____<4,5>5684<1,4>664

____<1,4>7653<4,1>862

____<4,1>9748

<2,3>1062____

<2,3>117010

<3,5>1262___

<3,5>136612

<5,4>1462___

<5,4>156614

<1,2>1662____

<1,2>17∞结点16给出了一条最短周游路线:1→2→3→5→4→12023/2/421计算机算法设计与分析分支限界法的效率从TSP问题的计算可看出,分支限界法搜索的状态空间为O(2n)。对每个结点的计算时间为O(n2)。因此在最坏情况下,分支限界法计算TSP的时间复杂性为O(n22n)。显然,用分支限界法计算TSP的空间复杂性为O(n22n)。因为对每个结点需要n2的空间。2023/2/422计算机算法设计与分析对评价函数的讨论分支限界法总耗时为O(n22n),它与回溯法、动态规划法等在时间复杂性上没有本质的区别。然而,如果评价函数选择得好,采用分支限界法可能有一个小得多的常数因子。好的评价函数应该有一个尽可能高的下界估计和一个尽可能低的上界估计,从而使得搜索空间能够得到有效的压缩,从而提高效率。在理论上可以证明好的评价函数所搜索的结点不会多于坏的评价函数所搜索的结点。2023/2/423计算机算法设计与分析关系、传递闭包与搜索定义在集合S上关系R是笛卡儿直积S×S的一个子集,RS×S。关系R的传递闭包是包含R的最小的具有传递性质的关系。若S是有限的,|S|=n,则R可表示为一个n×n的关系矩阵M或n个结点的有向图G。求关系R的传递闭包实际上也就是在有向图G上的搜索。而反过来,在有向图G上的搜索也就是求某种关系的传递闭包。2023/2/424计算机算法设计与分析传递闭包的集合算法给定关系R以及S中的元素a,求R*(a)。

初始化:U=A={a};q=true;while(q){

for(p∈A)U=U∪{d|d∈S且

pRd};

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论