Branch and bound is the broad class of algorithms from which branch, cut, and price is descended. Branch and bound algorithms use a divide and conquer strategy to partition the solution space into subproblems and then optimizes individually over each of them. For instance, let S be the set of solutions to a given problem, and let be a vector of costs associated with members of S. Suppose we wish to determine a least cost member of S and we are given , a good'' solution determined heuristically. Using branch and bound, we initially examine the entire solution space S. In the processing or bounding phase, we relax the problem in some fashion. In so doing, we admit solutions that are not in the feasible set S. Solving this relaxation yields a lower bound on the value of an optimal solution. If the solution to this relaxation is a member of S or has cost equal to , then we are done--either the new solution or , respectively, is optimal. Otherwise, we identify n subsets of S, , such that . Each of these subsets is called a subproblem; are also sometimes called the children of S. We add the children of S to the list of candidate subproblems (those which need processing). This is called the branching phase.