DSA - Branch and Bound Algorithm



The branch and bound algorithm is a technique used for solving combinatorial optimization problems. First, this algorithm breaks the given problem into multiple sub-problems and then using a bounding function, it eliminates only those solutions that cannot provide optimal solution.

Combinatorial optimization problems refer to those problems that involve finding the best solution from a finite set of possible solutions, such as the 0/1 knapsack problem, the travelling salesman problem and many more.

When Branch and Bound Algorithm is used?

The branch and bound algorithm can be used in the following scenario −

  • Whenever we encounter an optimization problem whose variables belong to a discrete set. These types of problems are known as discrete optimization problems.

  • As discussed earlier, this algorithm is also used to solve combinatorial optimization problem.

  • If the given problem is a mathematical optimization problem, then the branch and bound algorithm can also be applied.

How does Branch and Bound Algorithm work?

The branch and bound algorithm works by exploring the search space of the problem in a systematic way. It uses a tree structure (state space tree) to represent the solutions and their extensions. Each node in the tree is part of the partial solution, and each edge corresponds to an extension of this solution by adding or removing an element. The root node represents the empty solution.

The algorithm starts with the root node and moves towards its children nodes. At each level, it evaluates whether a child node satisfies the constraints of the problem to achieve a feasible solution. This process is repeated until a leaf node is reached, which represents a complete solution.

Branch and Bound

Searching techniques in Branch and Bound

There are different approaches to implementing the branch and bound algorithm. The implementation depends on how to generate the children nodes and how to search the next node to expand. Some of the common searching techniques are −

  • Breadth-first search − It maintains a queue of nodes to expand, which means this searching technique uses First in First out order to search next node.

  • Least cost search − This searching technique works by computing bound value of each node. The algorithm selects the node with the lowest bound value to expand next.

  • Depth-first search − It maintains a stack of nodes to expand, which means this searching technique uses Last in First out order to search the next node.

Types of Branch and Bound Solutions

The branch and bound algorithm can produce two types of solutions. They are as follows −

  • Variable size solution − This type of solution is represented by a subset which is the optimal solution to the given problem.

  • Fixed-size solution − This type of solution is represented by 0s and 1s.

Advantages of Branch and Bound Algorithm

The advantages of the branch and bound algorithm are as follows −

  • It can reduce the time complexity by avoiding unnecessary exploration of the state space tree.

  • It has different search techniques that can be used for different types of problems and preferences.

Disadvantages of Branch and Bound Algorithm

Some of the disadvantages of the branch and bound algorithm are as follows −

  • In the worst case scenario, it may search for all the combinations to produce solutions.

  • It can time consuming if the state space tree is too large.

Advertisements