disjointlp computes k vertex disjoint monotone paths from source to sink of a linear program. A complete description is available here: AK2005_preprint.ps. As input, the program requires a linear program whose inequalities define a full-dimensional bounded d-polytope. The user also specifies an integer k, the number of disjoint paths to compute. The program outputs k vertex-disjoint LP paths from source to sink of the input linear program. The source vertex is the vertex that minimizes the objective function, and the sink vertex maximizes the linear program. Vertices are represented by their lex-min basis, namely by the indices of the cobasic variables that define the lex-min basis of a vertex. A cobasis {1,5,7,9} represents the vertex that lies at the intersection of the (facet-defining) inequalities 1,5,7 and 9 of the input.
disjointlp is an extension of lrs. lrs is based on the reverse search algorithm of Avis and Fukuda(1992) , modified to use lexicographic pivoting and implemented in rational arithmetic. See Avis(1998a) for a technical description, and Avis(1998b) for some computational experience. The input files are in Polyhedra format , developed by Avis and Fukuda. All functions of lrs are available with the disjoinlp package, however the author of disjointlp, Bohdan Kaluzny, takes full responsibility for all functionality of any routines executed by code of the disjoinlp package.
The input inequalities need to define a polytope that is full dimensional. disjointlp accepts either integer or rational input, and produces integer or rational output. All computations are done exactly using either extended precision arithmetic or fixed long integer arithmetic. In the latter case no overflow checking is performed, and the user is advised to check results using the extended precision version. Since it is a pivot based method, disjointlp can be very slow for degenerate inputs. A discussion of various vertex enumeration/convex hull methods and the types of polyhedra that cause them to behave badly is contained in Avis, Bremner and Seidel (1997).
A program, redund, is supplied with the lrs package for removing redundancy from the input. This involves the removal of any inequalities that are not required to represent the polyhedron. In some cases, redundancy can greatly slow the processing time taken by lrs, and it is advisable to remove any redundancy from the input file using redund before applying lrs.These programs can be distributed freely under the GNU GENERAL PUBLIC LICENSE. Please read the file COPYING carefully before using. Please inform the author (Bohdan Kaluzny) of any interesting applications for which disjointlp was helpful (and bug reports too!)
The output should contain (along with other comment lines)
------------------------------------------------------
{list of inequalities }
end
disjoint k /* OR dd_disjoint k to break dual degeneracy */
maximize
c0 c1 ... cd-1
{options}
a0 + a1 x1 + ... + ad-1 xd-1 >= 0.
This inequality is input as the line
a0 a1 ... ad-1
The coefficients can be entered as integers or rationals in the format x/y.
For example, the square centered at the origin with side length two has
inequalities
1 + x1 >= 0 1+ x2 >=0 1-x 1 >= 0 1-x2 >=0
and would be represented by the input file
square
*centred square of side 2
H-representation
begin
4 3
rational
1 1 0
1 0 1
1 -1 0
1 0 -1
end
debug 0 0
Print out cryptic but detailed trace, dictionaries etc.
printpaths
Print out each path as the sequence of lex-max cobases uniquely representing verticesdigits n // placed before the begin statement//
lrsmp Extended precision arithmetic used in previous releases
lrslong Fixed length long
integer arithmetic. No overflow checking
but 5-10 times faster than lrsmp.
lrsgmp An interface to
GNU MP which must be installed first.
Runs 1-6 times faster than lrsmp on typical problems.
The standard make gives binaries lrs/redund with lrsmp, and lrs1/redund1 with lrslong. The fixed integer package is particularly useful
with 64 bit machines, and fairly large combinatorial problems (15-20 dimensions)
have been correctly solved. It may be useful for doing empirical work, eg.
searching for polyhedra with certain properties. Final results should always be
checked using lrsmp. If you have GNU MP installed,
"make gmp" will produce binaries glrs/gredund using this library. It may
be necessary to edit the makefile to specify the path to gmp.
The following error messages are produced by disjointlp .
Data type must be integer of rational
Even with redundant input removed a polyhedron may be highly degenerate. In directory ine/metric there are many highly degenerate combinatorial polytopes. These are difficult problems for all vertex enumeration/convex hull programs that use pivoting, such as lrs. For example, the file ccc7.ine is a cone with 63 facets in 21 dimensions. It has 38,780 extreme rays, but computing these required the evaluation of 247,271,659 bases!
The input linear program is dual degenerate if adjacent vertices have the same objective value. disjointlp can break dual degeneracy by ordering these vertices lexicographically with respect to the lex-min bases that represent the vertices. To break dual degeneracy specify the dd_disjoint option.
I would like to thank David Avis for helping with this implementation project, as disjointlp would not be possible without the existence of lrs. That being said, only am I to be held fully responsible for any bugs or errors that may occur when running the code!
D. Avis, B. Kaluzny, Computing Disjoint Paths in Linear Programs, AK2005_preprint.ps GERAD Technical Report G-2005-26, March 2005.
D. Avis, lrs: A Revised Implementation of the Reverse Search Vertex Enumeration Algorithm, http://cgm.cs.mcgill.ca/~avis/doc/avis/Av98a.ps May 1998.
D. Avis, "Computational Experience with the Reverse Search Vertex Enumeration Algorithm," Optimization Methods and Software, (1998 (to appear)). http://cgm.cs.mcgill.ca/~avis/doc/avis/Av98b.ps
D. Avis, D. Bremner, and R. Seidel, "How Good are Convex Hull Algorithms?," Computational Geometry: Theory and Applications, Vol 7,pp.265-301(1997). http://cgm.cs.mcgill.ca/~avis/doc/avis/ABS96a.ps
D. Avis and K. Fukuda, "A Pivoting Algorithm for Convex Hulls and Vertex Enumeration of Arrangements and Polyhedra," Discrete and Computational Geometry, Vol. 8, pp. 295-313 (1992). http://cgm.cs.mcgill.ca/~avis/doc/avis/AF92b.ps
L. Ford and D. Fulkerson, Maximal flow through a network, Canad. J. Math. 8 (1956), 1142-1146.
F. Holt and V. Klee, A Proof of the Strict Monotone 4-step Conjecture, Contemporary Mathematics 223 (1999) 201--216.
G. Adelson-Velskii and E. Landis, An Algorithm for the Organization of Information, Doklady Akademii Nauk SSSR, 146:263-266, 1962 (Russian).