'回溯'和'分支和界限'之间的区别

时间:2015-05-04 08:07:44

标签: depth-first-search backtracking breadth-first-search branch-and-bound

在回溯中我们使用bfs和dfs.Even在分支和绑定中我们使用bfs和dfs以及最低成本搜索。

所以我们何时使用回溯,何时使用分支和绑定

使用分支和绑定会减少时间复杂度吗?

Branch and Bound中的最低成本搜索是什么?

如果我错了,请纠正我

谢谢

4 个答案:

答案 0 :(得分:3)

回溯

回溯是解决离散约束满足问题(CSP)的一般概念。它使用DFS。一旦到达了无法构建解决方案的地步,它就会回到可以选择的最后一个点。这样,便会迭代所有可能的解决方案,有时可能会提前终止。

分支界限

边界约束(B&B)是解决离散约束优化问题(COP)的概念。它们与CSP相似,但是除了具有约束条件之外,还具有优化标准。与回溯相反,B&B使用广度优先搜索。

名称的一部分, bound ,是指B&B修剪可能的解决方案的空间的方式:它得到一种启发式方法,并具有一个上限。如果无法改善此情况,则可以丢弃一棵后生树。

除此之外,我看不到回溯。

其他来源

网络上还有其他答案,它们的陈述大不相同:

  • 分支机构正在修剪(source)回溯

答案 1 :(得分:2)

<强>回溯

  1. 用于查找问题可用的所有可能解决方案。
  2. 通过 DFS (深度优先搜索)方式遍历状态空间树。
  3. 它意识到它做出了一个糟糕的选择&amp;通过备份撤消最后的选择。
  4. 搜索状态空间树,直到找到解决方案。
  5. 涉及可行性功能
  6. <强>科定界

    1. 用于解决优化问题。
    2. 它可以以任何方式遍历树, DFS或BFS
    3. 它意识到它已经有一个更好的最佳解决方案,预解决方案导致它放弃了预解决方案。
    4. 它完全搜索状态空间树以获得最佳解决方案。
    5. 它涉及边界功能

答案 2 :(得分:1)

回溯

  • 回溯是一种通用算法,用于查找某些计算问题的所有(或某些)解决方案,特别是约束满足问题,逐步构建候选解决方案,并放弃每个部分候选c(&# 34;一旦确定c无法完成到有效的解决方案,就回溯&#34;)。
  • 它列举了一组部分候选人,原则上可以通过各种方式完成,以便为给定问题提供所有可能的解决方案。通过一系列候选扩展步骤逐步完成完成。
  • 从概念上讲,部分候选者表示为树结构的节点,潜在搜索树。每个部分候选人是通过单个扩展步骤与其不同的候选者的父级,树的叶子是无法进一步扩展的部分候选者。
  • 以深度优先顺序(DFS)从根向下递归遍历此搜索树。它意识到它做出了一个糟糕的选择&amp;通过备份撤消最后的选择。
  • 详情请见Sanjiv Bhatia's presentation on Backtracking for UMSL

分支和界限

  • 分支定界算法由通过状态空间搜索的候选解决方案的系统枚举组成:候选解决方案集被认为是形成一个在根处设置完整的root树。
  • 该算法探索此树的分支,它代表解决方案集的子集。在枚举分支的候选解之前,将针对最优解上的上下估计边界检查分支,并且如果它不能产生比迄今为止发现的最佳解决方案更好的解决方案,则丢弃该分支。算法
  • 它可以以下列方式遍历树:
    1. BFS (呼吸优先搜索)或(FIFO)分支和界限
    2. D-Search (LIFO)分支机构
    3. 最少计数搜索(LC)分支和界限
  • 有关详细信息:Sanjiv Bhatia's presentation on Backtracking for UMSL

答案 3 :(得分:0)

回溯: -从解空间中选择最佳解。 -通过DFS遍历。 分界: -BFS遍历。 -这里只会生成富有成效的解决方案,而不是生成所有可能的解决方案。