Chapter_7回溯法.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Chapter_7回溯法

7 回溯法 Backtracking;引例;几个概念;回溯法的工作原理;a;输入:无向图G=(V,E) 输出:G的顶点的3着色c[1…n],其中每个c[j]为1,2或3. 1. for k ←1 to n 2. c[k] ←0 //no color 3. end for 4. flag ←false graphcolor(1) if flag then output c 7. else output “no solution”;输入:无向图G=(V,E) 输出:G的顶点的3着色c[1…n],其中每个c[j]为1,2或3. 1. for k ←1 to n 2. c[k] ←0 3. end for 4. flag ←false 5. k ←1 //start from v1 6. while k≥1 7. while c[k]≤2 //为第k个顶点着色 8. c[k] ←c[k]+1 9. if c为合法着色then flag ←true and exit 10. else if c为部分着色then k ←k+1 //准备为下一顶点着色,→7 11. end while //假设着色既不合法也非部分的,即死结点,试其他色 12. c[k] ←0 //vk试验了所有颜色均失败, 当前顶点颜色只好归0,回溯 13. k ←k-1 //回溯到上一个顶点 (配合第6句的k≥1来理解) 14.end while //注意:回溯到上一个顶点后,c[k]+1,即尝试下一种颜色; 皇后问题 ;考察n皇后问题n=4的情形:解空间有44(可减少至4!)种布局, 可用一棵高度为4的完全4叉树表示:树的根对应于没有放置皇后的布局,第一层结点对应于皇后在第一行(列)可能放置列(行)的情况,依此类推。 合法布局:一个不互相攻击的4 皇后布局 部分布局:一个不互相攻击的少于4个皇后的布局 下图表示一个部分布局,用向量(3,1,0,0)表示;;x1; ;再扩展B到达E(续) E可行,此时A、B、E是活结点,E成为新的扩展结点 扩展E,先到达J Crw3,J导致一个不可行解,尝试E的下一个元素 再次扩展E到达K 由于K是叶结点,即得到一个可行解x=(1,0,0),V=45 K不可扩展,成为死结点,返回到E E没有可扩展结点,成为死结点,返回到B B没有可扩展结点,成为死结点,返回到A (回溯到A);A再次成为扩展结点,扩展A到达C (尝试A的下一元素) Cr=30,V=0,活结点为A、C,C为当前扩展结点 扩展C,先到达F Cr=Cr-w2=15,V=V+v2=25,此时活结点为A、C、F,F成为当前扩展结点 扩展F,先到达L Cr=Cr-w3=0,V=V+v3=50 L是叶结点,且5045,皆得到一个可行解x=(0,1,1),V=50 L不可扩展,成为死结点,返回到F 再扩展F到达M M是叶结点,且2550,不是最优解 M不可扩展,成为死结点,返回到F F没有可扩展结点,成为死结点,返回到C ; 再扩展C到达G Cr=30,V=0,活结点为A、C、G,G为当前扩展结点 扩展G,先到达N,N是叶结点,且2550,不是最优解,又N不可扩展,返回到G 再扩展G到达O,O是叶结点,且050,不是最优解,又O不可扩展,返回到G G没有可扩展结点,成为死结点,返回到C C没有可扩展结点,成为死结点,返回到A A没有可扩展结点,成为死结点,算法结束,最优解X=(0,1,1),最优值V=50 ;给定一个问题的实例,如果该问题实例的解可以表示成定长的向量形式,那么就可以考虑使用回溯法来解决。 如果一个问题的实例,其解是一个变长的向量形式,是否可以使用回溯法?;一个例子;y1;通用回溯方法框架 ; 在回溯法中,每个xi 均是属于某个有限集合的,不妨称之为Xi,那么回溯法实质上是按照词典顺序考虑笛卡儿积: X1×X2×…×Xn 中的元素。 算法最初从空向量开始,先选择X1中的最小元素作为x1; 如果(x1)是部分解,那么选择X2中的最小元素作为x2; 如果(x1, x2)是部分解,则继续考虑X3中的最小元素作为x3 ; 否则,考虑X2中的第二个元素作为x2。依此类推。 ;一般说来, 当算法已经检测到部分解(x1, x2,…, xj), 需要继续考虑 v = (x1, x2,…, xj, xj+1)时,有以下几种情形:;递归回溯;迭代回溯;小结;分支限界法(Branch and Bounds);基本思想 ;常见的两种分支限界法;0-1背包问题, 应用优先队列式分支限界法;为搜索结点设置一个上界ub (u

文档评论(0)

shaoye348 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档