算法四:回溯和分支界定

回溯:

寻找问题的解的一种可靠的方法是首先列出所有候选解,然后依次检查每一个,在检查完:
所有或部分候选解后,即可找到所需要的解。理论上,当候选解数量有限并且通过检查所有或
部分候选解能够得到所需解时,上述方法是可行的。不过,在实际应用中,很少使用这种方法,
因为候选解的数量通常都非常大(比如指数级,甚至是大数阶乘),即便采用最快的计算机也
只能解决规模很小的问题。
对候选解进行系统检查的方法有多种,其中回溯和分枝定界法是比较常用的两种方法。按
照这两种方法对候选解进行系统检查通常会使问题的求解时间大大减少(无论对于最坏情形
还是对于一般情形)。事实上,这些方法可以使我们避免对很大的候选解集合进行检查,同时
能够保证算法运行结束时可以找到所需要的解。因此,这些方法通常能够用来求解规模很大
的问题。
本章集中阐述回溯方法,这种方法被用来设计货箱装船、背包、最大完备子图、旅行商和
电路板排列问题的求解算法

算法思想

分枝定界(branch and bound)是另一种系统地搜索解空间的方法,它与回溯法的主要区
别在于对E-节点的扩充方式。每个活节点有且仅有一次机会变成E-节点。当一个节点变为E-
节点时,则生成从该节点移动一步即可到达的所有新节点。在生成的节点中,抛弃那些不可
能导出(最优)可行解的节点,其余节点加入活节点表,然后从表中选择一个节点作为下一
个E-节点。从活节点表中取出所选择的节点并进行扩充,直到找到解或活动表为空,扩充过
程才结束。
有两种常用的方法可用来选择下一个E-节点(虽然也可能存在其他的方法):
1) 先进先出(F I F O) 即从活节点表中取出节点的顺序与加入节点的顺序相同,因此活节
点表的性质与队列相同。
2) 最小耗费或最大收益法在这种模式中,每个节点都有一个对应的耗费或收益。如果查
找一个具有最小耗费的解,则活节点表可用最小堆来建立,下一个E-节点就是具有最小耗费
的活节点;如果希望搜索一个具有最大收益的解,则可用最大堆来构造活节点表,下一个E-
节点是具有最大收益的活节点。

算法四:回溯和分支界定相关推荐

  1. (转)五大常用算法:分治、动态规划、贪心、回溯和分支界定

    分治算法 一.基本概念 在计算机科学中,分治法是一种很重要的算法.字面上的解释是"分而治之",就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题-- ...

  2. 五大常用算法:分治、动态规划、贪心、回溯和分支界定

    算法系列之十六:使用穷举法解猜结果游戏--http://blog.csdn.net/orbit/article/details/7607685 ---------------例子: 麻将PC上发送操作 ...

  3. 算法作业04(回溯与分支界限算法)(骑士游历与行列变换问题)

    1.骑士游历问题 问题描述: 在国际象棋的棋盘(8行×8列)上放置一个马,按照"马走日字"的规则,马要遍历棋盘,即到达棋盘上的每一格,并且每格只到达一次.若给定起始位置(x0,y0 ...

  4. 五大经典算法之回溯法

    一.基本概念   回溯法,又称为试探法,按选优条件向前不断搜索,以达到目标.但是当探索到某一步时,如果发现原先选择并不优或达不到目标,就会退回一步重新选择,这种达不到目的就退回再走的算法称为回溯法. ...

  5. 理解git结构与简单操作(四)合并分支的方法与策略

    接上节,此时的dev分支与master分支的进度就不一样了,所以需要将dev分支与master分支同步.这里需要的就是合并分支的操作,大家应该都知道用git merge或者git rebase. gi ...

  6. 一文了解贪心算法和回溯算法在前端中的应用

    一文了解贪心算法和回溯算法在前端中的应用 一.贪心算法 1.贪心算法是什么? 2.应用场景 3.场景剖析:零钱兑换 二.回溯算法 1.回溯算法是什么? 2.什么问题适合选用回溯算法解决? 2.应用场景 ...

  7. LeetCode算法总结-回溯法与深度优先搜索

    转载自  LeetCode算法总结-回溯法与深度优先搜索 回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标.但当探索到某一步时,发现原先选择并不优或达不到目标,就退 ...

  8. 第39级台阶回溯算法c语言,五大经典算法之回溯法 - osc_9ipdey7e的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.基本概念 回溯法,又称为试探法,按选优条件向前不断搜索,以达到目标.但是当探索到某一步时,如果发现原先选择并不优或达不到目标,就会退回一步重新选择,这种达不到目的就退回再走的算法称为回溯法. 与穷 ...

  9. 五大常用算法一(回溯,随机化,动态规划)

    五大常用算法一(回溯,随机化,动态规划) 回溯算法 回溯法: 也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并以此慢慢地扩大问题规模,迭代地逼近最终问题 ...

  10. 拉斯维加斯算法结合回溯法求解n后问题

    实验8 拉斯维加斯算法结合回溯法求解n后问题 设stopVgas为采用拉斯维加斯算法随机排设的皇后个数,对n.stopVgas进行多组不同取值时,记录程序成功率.运行时间 ① 参考课件.教材.其它资料 ...

最新文章

  1. ADPRL - 近似动态规划和强化学习 - Note 10 - 蒙特卡洛法和时序差分学习及其实例 (Monte Carlo and Temporal Difference)
  2. 张一鸣的微博世界-产品篇一
  3. MySQL添加用户、删除用户与授权
  4. pom.xml中提示web.xml is missing and failonmissingw...
  5. list循环赋值_Python之 for循环
  6. Ubuntu20.04开机界面(boot animation)改成Windows95
  7. angular中的href=unsafe:我该怎么摆脱你的溺爱!!
  8. 点击开启此虚拟机时,出现“该虚拟机似乎正在使用中”问题
  9. matlab重叠相加法求卷积,通过重叠相加法实现卷积的报告.doc
  10. MySQL Cookbook 学习笔记-03
  11. 端上智能——深度学习模型压缩与加速
  12. shell脚本批量导出MYSQL数据库日志/按照最近N天的形式导出二进制日志[连载之构建百万访问量电子商务网站]...
  13. Cortex - M3 一些基础知识
  14. 数据结构上机实践第10周项目1 - 二叉树算法验证
  15. 用R语言实现深度学习情感分析
  16. springcloud config不重启修改配置_SpringCloud实战-Bus消息总线(动态修改配置)
  17. 中国(龙港)首届 “港为人先”全球创新创业大赛
  18. 74CMS的RCE挖掘思路
  19. pandas 中的 isin和isnotin
  20. 《高效能青少年的七个习惯》读后感作文3900字

热门文章

  1. matlab xls转csv,使用python或Matlab将csv文件中的数据转换为csv文件
  2. DPDK初始化分析(五)
  3. DPDK分析——UIO
  4. Android lowmemorykiller分析
  5. 面向对象8:继承性、Object类的理解、写项目经验、debug经验
  6. linux文件界面画面,Linux对比文件,很好用的图形界面
  7. java 封闭类型_java – 如何获取封闭类?
  8. PyTorch入门(四)搭建神经网络实战
  9. python sys.stdin.buffer_为sys.stdin设置较小的缓冲区大小?
  10. python中用于返回元组中元素最小值的是_第5章习题