Combinatorial optimization is the discipline that studies problems in which one seeks to minimize or maximize an objective function by appropriately choosing the values of some variables from within an allowed finite set. In a typical combinatorial optimization problem, the feasibility of a solution can be efficiently verified, but the number of feasible solutions is so large that an exhaustive search of an optimal solution is doomed to failure. Thus, efficient combinatorial optimization algorithms need to exploit the structure of the problem being solved. While the classical approach to a combinatorial optimization problem is to assume that all relevant data are available before a solution method is applied, it has recently become more and...