Branch and Bound algorithms produce some number of possible new
branches, from some starting point. On these branches, a cost
function (called )
representing the current cost of the
solution, plus some penalty for not having finished the task yet is
defined. Furthermore, we define a lower-bound (called
)
on the
cost, which is used for bounding our search.
When we have some number of possible new branches to search thru, we
can ignore all branches having a
,
and
their entire sub-trees.
If the
function is close to the true cost of completing the
search along some branch, we will be able to cut away most of the
unnecessary branches. If the function is not very close, however, we
will still have to search thru some very large domain.
Often the quality of
and the time it takes to compute is a
compromise, and one will have to experiment to find a viable
routine. However, if the quality of
is low, nothing else in the
search algorithm will be able to compensate for this.