算法设计第5章.ppt

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
算法设计第5章

回溯法 Chapter 5 回溯法 (Backtrack) Kun Yue November, 2010 提纲 回溯法的基本思想 装载问题 n后问题 图的m着色问题 旅行售货员问题 总结 引例 (1) Eight-Queens problem 引例 (2) 0-1背包问题的回溯分析 - n=3, w={16, 15, 15}, p={45,25,25}, c=30 - 所有可能的情况 vs. 减小了的搜索空间 回溯法的基本思想 (1) 问题的提出 - 很多问题通过穷举搜索数量巨大但有限多个可能性可以获得问题的解 - 很多问题不存在用穷举搜索之外的方法来解决问题的算法 - 找出问题的解集、回答什么是满足约束条件的最佳解、…… 回溯法 - 系统化的搜索,并且希望能将搜索空间尽可能减少 - 有组织的搜索,常常可以避免搜索所有的可能性 - 适用于解一些组合数(解空间)相当大的问题 - 问题的解向量:回溯法希望一个问题的解能够表示成一个n元式 (x1, x2, …, xn)的形式 回溯法的基本思想 (2) 问题的解空间 - 显约束:对分量xi的取值限定 - 隐约束:为满足问题的解而对不同分量之间施加的约束 - 解空间:解向量满足显式约束条件的所有元组;将解空间组织为树 问题状态的生成 - 扩展结点、活结点、死结点 - 深度优先的问题状态生成 回溯法 - 避免无效搜索、提高效率——利用约束函数、限界函数来处死那些实际上不可能产生所需解的活结点,以减少问题的计算量 - 具有限界函数的深度优先生成法——回溯法 回溯法的基本思想 (3) 回溯法的基本思想 (4) 解题思路 - 确定解空间结构; - 深度优先搜索解空间+剪枝函数 常用剪枝函数 - 用约束函数在扩展结点处剪去不满足约束的子树(问题本身的约束) - 用限界函数剪去得不到最优解的子树(相对于已得到的解) 主要特征 - 不需要存储整棵搜索树,只需存储根到当前扩展结点的路径 - 设h(n)为从根到叶的最长路径长度 - 对于子集树解空间 —— O(2h(n)) 对于排列树解空间 —— O((h(n))!) 装载问题 回溯法的基本思想 装载问题 n后问题 图的m着色问题 旅行售货员问题 总结 装载问题 (1) 问题 - n个集装箱要装上两艘载重量分别为c1和c2的轮船,集装箱i重量为wi - 有解: - 最优解:占据相同的空间,装箱数量最多 (1) 首先将第一艘轮船尽可能装满; (2) 将剩余的集装箱装上第二艘轮船。 装载问题 (2) 回溯算法的基本思想 - 对于第一艘船的装载情况:一个集装箱要么装上、要么不装 — 1,0 装载问题 (3) 装载问题的回溯算法 n后问题 回溯法的基本思想 装载问题 n后问题 图的m着色问题 旅行售货员问题 总结 n后问题 (1) 问题 - 在n×n格的棋盘上放置彼此不受攻击的n个皇后 - n个皇后,任何2个皇后不放在同一行或同一列或同一斜线上 算法思想 - 解空间:完全n叉树 - 解向量:(x1, x2, …, xn) - 每行放一个皇后, x[i]表示皇后i被放在第i行x[i]列,约束: (1) (2) n后问题 (2) n皇后问题的回溯算法 boolean place (int k) { for(int j=1;jk;j++) if(|k-j|==|(x[j]-x[k]|) or |x[j]==x[k]|) return false; return true; } void backtrack (int t) { if(tn) sum++; else for(int i=1;i=n;i++) { x[t]=i; if(place(t)) backtrack(t+1); } } 图的m着色 回溯法的基本思想 装载问题 n后问题 图的m着色问题 旅行售货员问题 总结 图的m着色 (1) 问题 - 用m种不同的颜色给无向图G=(V, E)的各顶点着色,相邻顶点颜色不重复 - G是m可着色的,找出不同着色法;不是则给出否定回答 - 例如: |V|=3, m=3的解空间树 图的m着色 (2) 算法思想 - 解空间树:完全m叉树 - 解向量:(x1, x2, … , xn),xi表示顶点i所着颜色x[i] - 约束:顶点i与已着色的相邻顶点颜色不重复 即:所有G中存在的边(i, j),x[i]?x[j],j?[1,

文档评论(0)

tiangou + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档