Branch and bound is the broad class of algorithms from which branch, cut, and price is descended. A branch and bound algorithm uses a divide and conquer strategy to partition the solution space into subproblems and then optimizes individually over each subproblem. For instance, let 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 . In the processing or bounding phase, we relax the problem. In so doing, we admit solutions that are not in the feasible set . Solving this relaxation yields a lower bound on the value of an optimal solution. If the solution to this relaxation is a member of or has cost equal to , then we are done--either the new solution or , respectively, is optimal. Otherwise, we identify subsets of , , such that . Each of these subsets is called a subproblem; are sometimes called the children of . We add the children of to the list of candidate subproblems (those which need processing). This is called branching.