FIFO分支和绑定,LIFO分支和绑定以及LC分支和绑定有什么区别?

时间:2017-04-05 14:43:32

标签: algorithm branch-and-bound

FIFO LIFO LC 分支和绑定有什么区别?

2 个答案:

答案 0 :(得分:4)

Branch& Bound通过使用估计的边界来限制可能的解决方案的数量,从而在整个搜索空间内发现分支。不同类型(FIFO,LIFO,LC)定义了探索搜索空间和生成分支的不同“策略”。

FIFO (先进先出):始终使用队列中最旧的节点来扩展分支。这导致广度优先搜索,其中深度为d的所有节点首先被访问,然后访问深度为d + 1的任何节点。

LIFO (后进先出):始终使用队列中最年轻的节点来扩展分支。这导致深度优先搜索,其中分支被扩展到在特定深度处发现的每个第一个子节点,直到到达叶节点。

LC (最低成本):根据给定的成本函数,分支由节点扩展,该节点增加了最低的额外成本。因此,遍历搜索空间的策略由成本函数定义。

答案 1 :(得分:2)

唯一的区别在于实时节点的实现。在LC分支和绑定中,我们开始探索的第一个节点是那个向我们提供当时最佳解决方案的节点。例如,在0/1背包问题中,使用LC分支和绑定,我们将开始探索的第一个子节点将是提供最大成本的那个节点。

在FIFO分支和绑定中,如名称所示,子节点以先进先出的方式进行探索。我们从第一个子节点开始探索节点。在LIFO分支和绑定中,我们从最后探索节点。最后一个子节点是首先要探索的节点。