The basic idea of the branch-and-bound method is as follows:
When we solve a problem we make a series of decisions which lead to a solution.
Each of these decisions is on the selection of a partial solution from a set of
possible partial solutions such as assigning a value to a variable.
As we make decisions, partial solutions become more and more complete
and in the end they reach a complete solution.
A brute force method would explore all those sequences of decisions until
a solution is reached.
The branch-and-bound approach is a heuristic method that tries to reduce
the number and length of those sequences.
For a minimization problem suppose that we have an upper bound for the optimal value
of the objective function.
This is usually the value of the objective function for the best feasible solution
found so far.
Suppose also that for each of the available partial solutions we can find
a lower bound for the value of the objective function.
If the lower bound for a partial solution is greater than or equal to the current upper bound
then that partial solution need not be considered for completion. If the lower bound
is a feasible complete solution and it is smaller than the current upper bound, then
a better upper bound has been found. So update the upper bound. This is the bounding part
of branch-and-bound.
If the lower bound is smaller than the current upper bound, that partial solution
need to be examined for possible completion. This partial solution is partitioned into
a number of more specific partial solutions such as selecting a variable and
possible values for that variable. This is the branching part of branch-and-bound.
The general scheme of branch-and-bound method is given below.
Branch-and-Bound General Scheme for Minimization
Initialization: := .
Initially the entire solution set is the only remaining subset.
Branching: Select one of the remaining subsets and partition it
into two or more
subsets.
(Strategy of selection : best first, newest first etc.)
Bounding: For each new subset obtained in Branching, find a lower bound
(i.e. the best you may be able to get) denoted by
for the value of the objective function.
Fathoming: For each new subset, exclude it if
(1)
,
(2) the subset is found to contain no feasible solutions or
(3) the best feasible solution in the subset has been found.
If , then := .
Stopping: If no more remaining subsets, then stop.