The branch and bound algorithm and A∗ are based on an implicit enumeration of
all solutions of the considered optimization problem. The search space is explored by
dynamically building a tree whose root node represents the problem being solved and
its whole associated search space. The leaf nodes are the potential solutions and the
internal nodes are subproblems of the total solution space. The pruning of the search
tree is based on a bounding function that prunes subtrees that do not contain any
optimal solution. A more detailed description of dynamic programming and branch
and bound algorithms may be found in Section 5.2.1.