网站大量收购独家精品文档,联系QQ:2885784924

第5章-回溯及分支限界.ppt

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

* 分支限界法与回溯法区别 * 分支限界法与回溯法区别 分支限界法与回溯法的不同 (1)求解目标:回溯法的求解目标是找出解空间树中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。 (2)搜索方式的不同:回溯法以深度优先的方式搜索解空间树,而分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树。 解空间树的动态搜索 (1)回溯求解0/1背包问题,虽剪枝减少了搜索空间,但整个搜索按深度优先机械进行,是盲目搜索(不可预测本结点以下的结点进行的如何)。 (2)回溯求解TSP也是盲目的(虽有目标函数,也只有找到一个可行解后才有意义) (3)分支限界法首先确定一个合理的限界函数,并根据限界函数确定目标函数的界[down, up];然后按照广度优先策略遍历问题的解空间树,在某一分支上,依次搜索该结点的所有孩子结点,分别估算这些孩子结点的目标函数的可能取值 … 例6 图的着色问题 例5.6 着色问题:给定无向连通图G和m种颜色,用这些颜色 给图的顶点着色,每个顶点一种颜色. 要求是:G 的每条边的 两个顶点着不同颜色. 给出所有可能的着色方案;如果不存在 着这样的方案,则回答“No”. 则搜索空间为深度n 的m叉完全树. 将颜色编号为1,2,…,m, 结点x1, x2, …, xk:x1, x2, …, xk?{1, 2, .., m}, 1?k?n,表示顶 点1着颜色 x1,顶点2着颜色 x2,…,顶点 k 着颜色 xk. 约束条件:该顶点邻接表中的顶点与该顶点没有同色; 搜索策略:深度优先 时间:O(nmn) * 实例 1 1,2 1,2,1 1,2,1,3 1,2,1,3,1 1,2,1,3,1,2 1,2,1,3,1,2,3 1 2 3 3 2 1 3 1 2 3 1 2 1 3 2 * 提高效率的途径 根据对称性,只需搜索1/3的解空间即可. 当1和2确定,即 1,2以后,只有1个解,因此在1,3为根的子树中也只有1 个解.由于3个子树的对称性,总共有6个解. 进一步分析,在取定1,2以后,不可以扩张成1,2,3, 因为 可以检查是否有和1,2,3都相邻的顶点.如果存在,例如7, 则没 有解. 所以可以从打叉的结点回溯,而不必搜索它的子树. * 5.3 回溯算法的效率估计 与改进途径 Monte Carlo(蒙特卡罗)方法估计搜索树中的结点, 背景:蒙特卡罗方法于20世纪40年代美国在第二次世界大战中研制原子弹的“曼哈顿计划”计划的成员乌拉姆和冯·诺伊曼首先提出。数学家冯·诺伊曼用驰名世界的赌城—摩纳哥的Monte Carlo 1.从根开始,随机选择一条路经,直到不能分支为止, 即从x1,x2,…, 依次对xi 赋值,每个xi 的值是从当时的 Si中随机选取,直到向量不能扩张为止. 2.假定搜索树的其他 | Si | ?1 个分支与以上随机选出的 路径一样,计数搜索树的点数. 3.重复步骤 1 和 2,将结点数进行概率平均. * 算法5.6 Monte Carlo 输入:n,t 为正整数,n为皇后数,t为抽样次数 输出:sum, 即t 次抽样路径长度的平均值 1.sum ? 0 //sum为 t 次结点平均数 2.for i ?1 to t do //取样次数 t 3. m ? Estimate(n) //m为本次结点总数 4. sum ? sum + m 5. sum ? sum / t 算法实现 * m为输出——本次取样结点总数,k 为层数,r1为本层 分支数, r2为上层分支数,n为树的层数 算法5.7 Estimate(n) 1. m?1; r2?1; k?1 //m为结点总数 2. While k ? n do 3. if Sk=? then return m 4. r1 ? |Sk|*r2 //r1为扩张后结点总数 5. m ? m + r1 // r2为扩张前结点总数 6. xk ? 随机选择 Sk 的元素 7. r2 ? r1 8. k ? k+1 子过程 * 估计四后搜索树的结点数 case1.1,4,2:1+4+4?2+4?2=21 case2.2,4,1,3

文档评论(0)

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

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

1亿VIP精品文档

相关文档