Section: Scientific Foundations
Combinatorial optimization and integer programming
``Combinatorial optimization is a lively field of applied mathematics, combining techniques from combinatorics, linear programming, and the theory of algorithms, to solve optimization problems over discrete structures''  . A combinatorial optimization problem can be defined as follows: we are given a ground set Nand consider a finite collection of subsets, say . For each subset Sk there is an objective function value, f( Sk) , typically a linear function over the elements in Sk . The task is to find the subset Sk that minimizes f( Sk) . Typically, the feasible subsets are represented by inclusion or exclusion of members such that they satisfy certain conditions. Well known examples of combinatorial optimization problems are assignment, covering, cutting stock, knapsack, matching, packing, partitioning, routing, sequencing, scheduling (jobs), shortest path, spanning tree, and traveling salesman problems.
This then becomes a special class of integer programs (IP) whose decision variables are binary valued: xi= 1 if the i-th element is in the optimal solution; otherwise, xi= 0 . In this case, feasible subsets have to be expressed by linear constraints. IP formulations are not always easy, and often there is more than one formulation, some better than others. Many good formulations have exponential size.