Pivoting rule
FME relies on a pivoting rule similar to Gaussian elimination, it "eliminates"
x dimensions from the combined polytope on [xy]:
P×={[xy]∣Ax≤b,Cx=d,y=Ex+f}Its core idea goes as follows. First, use the equality constraints Cx=d and y=Ex+f to eliminate as many coordinates xi from
x as possible. This leaves us with a reduced polytope:
P′={[x0⋯xky]∣A′[x0⋯xky]≤b′}Now, consider the first coordinate x0. Each line of the inequality
constraint can be written as:
Ai,0′x0+⋯+Ai,k′xk+Ai,k+1′y0+Ai,k+2′y1≤bi′One of three outcomes can happen:
- Ai,0′<0: in this case, dividing by this number yields a lower
bound x0≥li, with
li:=Ai,0′bi′−j=1∑kAi,0′Ai,j′xj−Ai,0′Ai,k+1′y0−Ai,0′Ai,k+2′y1
- Ai,0′>0: then, doing the same yields an upper bound
x0≤ui
- Ai,0′=0: in this case, the inequality is independent from
x0, i.e. it is already part of the projection where x0
has been eliminated.
By construction, x0∈[l∗,u∗] where l∗ is the highest of
all lower bounds obtained by the above process, and u∗ is similarly
the lowest of all upper bounds. Therefore, the system of linear inequalities
has solutions if and only if this interval is nonempty, that is to say,
∀i,j,li≤ujThe key idea here is that the expressions of li's and uj's
only depend on x1,…,xk,y0,y1. To eliminate x0, we
will therefore:
- remove from A′ and b′ all lines i for which
Ai,0′=0
- add one new line for each pair (i, j) of lower and upper bounds on
x0 corresponding to li−uj≤0.
The result from this operation is a new polytope over [x1⋯xky0y1], from which the elimination can be repeated until the only
remaining coordinates are y0 and y1.
As can be readily seen from the combinatorics of its update rule,
Fourier-Motzkin elimination has a (doubly) exponential memory complexity.
Imbert has proposed a set of syntactic rules
to avoid considering pairs of lower-upper bounds that yield redundant
inequalities, but without lowering the worst-case complexity of the overall
algorithm.