1

What is the difference between FIFO, LIFO and LC Branch and Bound?

Satender
  • 117
  • 1
  • 2
  • 9

2 Answers2

5

Branch & Bound discovers branches within the complete search space by using estimated bounds to limit the number of possible solutions. The different types (FIFO, LIFO, LC) define different 'strategies' to explore the search space and generate branches.

FIFO (first in, first out): always the oldest node in the queue is used to extend the branch. This leads to a breadth-first search, where all nodes at depth d are visted first, before any nodes at depth d+1 are visited.

LIFO (last in, first out): always the youngest node in the queue is used to extend the branch. This leads to a depth-first search, where the branch is extended through every 1st child discovered at a certain depth, until a leaf node is reached.

LC (lowest cost): the branch is extended by the node which adds the lowest additional costs, according to a given cost function. The strategy of traversing the search space is therefore defined by the cost function.

rival
  • 76
  • 1
  • 3
  • Additionally you often want to employ a heuristic which node to select first when doing LIFO / depth-first, which could be the node with LC – lhaferkamp Oct 27 '17 at 11:28
2

The only difference is in the implementation of live nodes. In LC branch and bound, the first node we start exploring is the one which promises us the best solution at that moment. For example, in 0/1 Knapsack Problem, using LC Branch and Bound, the first child node we will start exploring will be the one which offers the maximum cost out of all.

In FIFO branch and bound, as is visible by the name, the child nodes are explored in First in First out manner. We start exploring nodes starting from the first child node. In LIFO branch and bound, we explore nodes from the last. The last child node is the one to be explored first.

Tanisha
  • 21
  • 3