A basic feasible solution is degenerate when one or more of its basic variables is zero. A simplex algorithm pivot may then change the basis without moving the feasible point or changing the objective. Assignment networks force many zero-flow basic tree arcs.
Network simplex algorithm Created 2026-10-06 Updated 2026-10-07
The network simplex algorithm specializes the simplex algorithm to network flows. A basis is represented by a spanning tree with nonbasic flows at their bounds; potentials give reduced costs, and entering arcs produce cycle pivots. Degeneracy in linear programming is particularly common in assignment instances.
Introduce nonnegative slack variables and start the simplex algorithm at , with slacks . The objective's largest positive entering coefficient belongs to . Its ratio test is , , , so leaves and enters.
Solve that pivot row for and substitute into the other rows and the objective :
This is a feasible simplex dictionary at nonbasic variables . All their objective coefficients are negative, so no feasible increase can improve the objective. Thus
The negative reduced coefficients also prove uniqueness of this optimum.
The dual linear program, with nonnegative variables , is
The feasible choice has objective . Weak duality proves that it and the primal point are optimal. Complementary slackness also forces because the first two primal slacks are positive, and then the positive forces .
Introduce integer-valued slack variables and . Write . The initial simplex dictionary is
In the simplex algorithm, let enter. The first constraint is the only limiting one, so leaves at . Substitution gives
Now enters and leaves: its ratio is smaller than the first row's ratio . The resulting simplex dictionary is
All nonbasic objective coefficients are nonpositive, and the basic values are nonnegative. Thus the continuous linear program has optimum
For integer programming, a row with integer variables yields the Gomory fractional cut , where is the fractional part. In the first row, the coefficient of on the left is , whose fractional part is , not . The two possible initial Gomory fractional cuts are therefore
Indeed . Choose the second row: implies , so its cut removes a strictly larger portion of the feasible polygon. This compares both printed alternatives before any further integer rounding.
Use the normalized integer slack variable , rather than an unnecessarily scaled cut slack. At the current basis,
The simplex dictionary is dual feasible but primal infeasible. In the dual simplex algorithm, leaves; the ratios of objective loss to improvement of this negative basic value are for and for , so enters. The pivot gives
The relaxed optimum is now , still nonintegral. The fractional row gives the next Gomory fractional cut
The negative left-hand coefficient of also has fractional part . Normalize the new integer slack variable as . Its dictionary row is . The dual simplex algorithm chooses to enter: its ratio is , compared with for . Substitution gives
Setting the nonbasic to zero gives a feasible integer solution. The final objective row bounds every point in the cut relaxation by , so the integer optimum is
Both cuts are valid for every original integer feasible point, making this also a certificate for the original integer program.
Write the absolute-value constraint as
Introduce slacks . In the simplex algorithm, let enter and leave, then let enter and leave. The final dictionary is
Thus
For sufficiently small perturbations, the same two constraints remain active:
Solving gives
and therefore the perturbed optimal value is
Introduce slack variables . In the initial simplex algorithm dictionary, has the largest positive objective coefficient. The ratio test gives
so enters and leaves. Solving the third constraint for gives
The objective becomes
Every reduced cost is now nonpositive, so the simplex optimality criterion gives
The other two slacks both equal one.
The dual linear program is
The vector
is dual feasible and has objective value . By weak duality, it and the displayed primal point are optimal; they also satisfy complementary slackness.
Simplex dictionary 2026-10-06
A simplex dictionary expresses the basic variables and the objective as affine functions of the nonbasic variables in a linear program. Setting the nonbasic variables to zero gives a basic feasible solution when all basic values are nonnegative. A simplex algorithm pivot exchanges one basic and one nonbasic variable. For maximization, a feasible dictionary with all nonbasic objective coefficients nonpositive certifies optimality.
Slack variable 2026-10-06
A slack variable turns an inequality constraint into the equality with . Its value measures the unused amount of the constraint. In the simplex algorithm, slack variables often supply the initial basic feasible solution.