A linear program may have both equality and inequality constraints. It is easy to rewrite equality constraints by inequalities. Can we rewrite inequality constraints by equalities? In fact, the standard form of linear programming only allows equality constraints and a special type of inequalities.
We say that a linear program is in standard form if the following are all true:
Namely, the standard form can be expressed as follows:
Now the question is how to convert a linear program into the standard form?
Clearly the third requirement is trivial. We only need to consider the first two requirement.
First, for the second requirement, consider a simple example
Next we consider the first requirement. If a variable has non-positive constraints, such as
Consider the following linear program:
The standard form is useful in algorithm design and analysis, especially in the algorithms based on primal dual method.
We now use the form
Consider the following linear program:
When a linear program achieve its optimal value
Is this observation always true?
Suppose a linear program has an optimal solution. Then there exists an optimal solution at a vertex (extreme point).
First, we define what a vertex and an extreme point are.
A point
A point
An important fact is that, these two types of points are equivalent for polyhedra.
For any polyhedron
Suppose
Sufficiency: Suppose
Assume
Necessity: Assume
Let
Taking
However, a polyhedron may not contain any vertex.
A polyhedron
We now prove the fundamental theorem of linear programming.
Let
Suppose
The fundamental theorem of linear programming gives us an algorithm to solve linear programs by enumerating all (
However, consider the
We now introduce a (ususally) efficient algorithm: the simplex method. We remark here that the simplex method is not a polynomial-time algorithm. However, it runs fast except for some artificially designed cases.
The key idea is that when we find a vertex of the feasible set, move from the current vertex to a "better" neighbor, where two vertices are neighbors if they share
Assume
How can we know whether a neighbor is "better"? Note that our goal is to compute
Two vertices are neighbors if they share
Consider the following linear program:
As shown above, the first step is to choose a variable whose coefficient is negative, and then increase it. What should we do if we have multiple variables who have negative coefficients?
In fact, the following example shows we may encounter some tricky problems if we choose a wrong variable. Consider the linear program with the same objective function as above, but the constraints are
Clearly it is possible to fail in this case, which is called degeneracy. One way to break cycles is to add perturbation in
Now the question is, what if the origin point
However, what if there is no known feasible solutions? The following two-phase simple method gives an algorithm to find a feasible solution of a linear program.