总结--回溯算法与分支界限算法-

假期 2020.01.23

定义回顾

(定义摘自360百度百科)

  1. 回溯算法: 回溯算法也叫试探法,它是一种系统地搜索问题的解的方法。回溯算法的基本思想是:从一条路往前走,能进则进,不能进则退回来,换一条路再试。用回溯算法解决问题的一般步骤为:
  • 定义一个解空间,它包含问题的解。
  • 利用适于搜索的方法组织解空间。
  • 利用深度优先法搜索解空间。
  • 利用限界函数避免移动到不可能产生解的子空间。
    问题的解空间通常是在搜索问题的解的过程中动态产生的,这是回溯算法的一个重要特性。
  1. 分支界限算法: 规定如何划分可能解集合为若干子集合。
  • 确定搜索过程:一般用树的结点表示各种可能解集合或子集合,并从树根开始动态地生成搜索树。
  • 确定结点界值计算法:对搜索树每个结点都要用统一方法计算出可能解集合约束函数值的下界值作为控制搜索方向和是否进一步生成和搜索该结点子结点的判据。
  • 确定限界或剪枝规则:一般规定,若某结点的下界值等于或超过了当前最佳解的值,则该结点的子结点不再生成(在人工智能中叫剪枝)。

相同点

  1. 都需要解空间,并且一般使用树表示
  2. 在树解空间中寻找最优解
  3. 确定判断条件,即是否满足存在最优解

不同点

  1. 分支界限算法通常用于寻找一个解,而回溯算法通常用于查找所有满足条件的解
  2. 分支界限算法通常在树的每一层中都会将所有孩子节点生成,而回溯算法在每一层中的只会出现一个孩子节点
  3. 分支界限算法通常以广度优先搜索方式进行,而回溯算法通常以深度优先方式搜索
发布了166 篇原创文章 · 获赞 45 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_44116998/article/details/104078675