For more information, see Integer Linear Programming and its related pages.
The importance of linear programming derives both from its many applications and from the existence of effective general purpose techniques for finding optimal solutions.
These techniques are general purpose in that they take as input an LP and determine a solution without reference to any information concerning the origin of the LP or any special structure of the LP.
They are fast and reliable over a substantial range of problem sizes and applications.
For the purposes of describing and analyzing algorithms, the problem is often stated in standard form as \[ \begin \min & c^T x & & \\ \mbox & A x & = & b \\ & x & \geq & 0 \end \] where \(x\) is the vector of unknown variables, \(c\) is the cost vector, and \(A\) is the constraint matrix.
The matrix \(A\) is generally not square; therefore, solving the LP is not as simple as just inverting the \(A\) matrix.
While it may not be obvious that integer programming is a much harder problem than linear programming, it is both in theory and in practice.
The most widely used general-purpose techniques for solving IPs use the solutions to a series of LPs to manage the search for integer solutions and to prove optimality.
Simplex methods visit basic solutions computed by fixing enough of the variables at their bounds to reduced the constraints \(Ax = b\) to a square system, which can be solved for unique values of the remaining variables.
Basic solutions represent extreme boundary points of the feasible region defined by \(Ax = b\), \(x = 0\), and the simplex method can be viewed as moving from one such point to another along the edges of the boundary. Barrier or interior-point methods by contrast visit points within the interior of the feasible region.