# HG changeset patch # User Peter Kovacs # Date 1327962254 -3600 # Node ID f63ba40a60f442278dc74a741050b29857a6daa9 # Parent 48e17328c1551cb8196973d6056a04e40e5d624a Improve module docs and references (#437) diff -r 48e17328c155 -r f63ba40a60f4 doc/groups.dox --- a/doc/groups.dox Sun Jan 29 22:33:14 2012 +0100 +++ b/doc/groups.dox Mon Jan 30 23:24:14 2012 +0100 @@ -407,9 +407,14 @@ strongly polynomial \ref klein67primal, \ref goldberg89cyclecanceling. In general, \ref NetworkSimplex and \ref CostScaling are the most efficient -implementations, but the other two algorithms could be faster in special cases. +implementations, but the other algorithms could be faster in special cases. For example, if the total supply and/or capacities are rather small, \ref CapacityScaling is usually the fastest algorithm (without effective scaling). + +These classes are intended to be used with integer-valued input data +(capacities, supply values, and costs), except for \ref CapacityScaling, +which is capable of handling real-valued arc costs (other numerical +data are required to be integer). */ /** @@ -448,7 +453,7 @@ \brief Algorithms for finding minimum mean cycles. This group contains the algorithms for finding minimum mean cycles -\ref clrs01algorithms, \ref amo93networkflows. +\ref amo93networkflows, \ref karp78characterization. The \e minimum \e mean \e cycle \e problem is to find a directed cycle of minimum mean length (cost) in a digraph. @@ -464,12 +469,11 @@ function. LEMON contains three algorithms for solving the minimum mean cycle problem: -- \ref KarpMmc Karp's original algorithm \ref amo93networkflows, - \ref dasdan98minmeancycle. +- \ref KarpMmc Karp's original algorithm \ref karp78characterization. - \ref HartmannOrlinMmc Hartmann-Orlin's algorithm, which is an improved - version of Karp's algorithm \ref dasdan98minmeancycle. + version of Karp's algorithm \ref hartmann93finding. - \ref HowardMmc Howard's policy iteration algorithm - \ref dasdan98minmeancycle. + \ref dasdan98minmeancycle, \ref dasdan04experimental. In practice, the \ref HowardMmc "Howard" algorithm turned out to be by far the most efficient one, though the best known theoretical bound on its running diff -r 48e17328c155 -r f63ba40a60f4 doc/min_cost_flow.dox --- a/doc/min_cost_flow.dox Sun Jan 29 22:33:14 2012 +0100 +++ b/doc/min_cost_flow.dox Mon Jan 30 23:24:14 2012 +0100 @@ -101,7 +101,7 @@ sup(u) \quad \forall u\in V \f] \f[ lower(uv) \leq f(uv) \leq upper(uv) \quad \forall uv\in A \f] -However if the sum of the supply values is zero, then these two problems +However, if the sum of the supply values is zero, then these two problems are equivalent. The \ref min_cost_flow_algs "algorithms" in LEMON support the general form, so if you need the equality form, you have to ensure this additional diff -r 48e17328c155 -r f63ba40a60f4 doc/references.bib --- a/doc/references.bib Sun Jan 29 22:33:14 2012 +0100 +++ b/doc/references.bib Mon Jan 30 23:24:14 2012 +0100 @@ -4,8 +4,7 @@ key = {LEMON}, title = {{LEMON} -- {L}ibrary for {E}fficient {M}odeling and {O}ptimization in {N}etworks}, - howpublished = {\url{http://lemon.cs.elte.hu/}}, - year = 2009 + howpublished = {\url{http://lemon.cs.elte.hu/}} } @misc{egres, @@ -213,6 +212,16 @@ pages = {309-311} } +@article{hartmann93finding, + author = {Mark Hartmann and James B. Orlin}, + title = {Finding minimum cost to time ratio cycles with small + integral transit times}, + journal = {Networks}, + year = 1993, + volume = 23, + pages = {567-574} +} + @article{dasdan98minmeancycle, author = {Ali Dasdan and Rajesh K. Gupta}, title = {Faster Maximum and Minimum Mean Cycle Alogrithms for @@ -225,6 +234,17 @@ pages = {889-899} } +@article{dasdan04experimental, + author = {Ali Dasdan}, + title = {Experimental analysis of the fastest optimum cycle + ratio and mean algorithms}, + journal = {ACM Trans. Des. Autom. Electron. Syst.}, + year = 2004, + volume = 9, + issue = 4, + pages = {385-418} +} + %%%%% Minimum cost flow algorithms %%%%% diff -r 48e17328c155 -r f63ba40a60f4 lemon/hartmann_orlin_mmc.h --- a/lemon/hartmann_orlin_mmc.h Sun Jan 29 22:33:14 2012 +0100 +++ b/lemon/hartmann_orlin_mmc.h Mon Jan 30 23:24:14 2012 +0100 @@ -98,7 +98,7 @@ /// /// This class implements the Hartmann-Orlin algorithm for finding /// a directed cycle of minimum mean cost in a digraph - /// \ref amo93networkflows, \ref dasdan98minmeancycle. + /// \ref hartmann93finding, \ref dasdan98minmeancycle. /// It is an improved version of \ref KarpMmc "Karp"'s original algorithm, /// it applies an efficient early termination scheme. /// It runs in time O(ne) and uses space O(n2+e). diff -r 48e17328c155 -r f63ba40a60f4 lemon/howard_mmc.h --- a/lemon/howard_mmc.h Sun Jan 29 22:33:14 2012 +0100 +++ b/lemon/howard_mmc.h Mon Jan 30 23:24:14 2012 +0100 @@ -98,7 +98,7 @@ /// /// This class implements Howard's policy iteration algorithm for finding /// a directed cycle of minimum mean cost in a digraph - /// \ref amo93networkflows, \ref dasdan98minmeancycle. + /// \ref dasdan98minmeancycle, \ref dasdan04experimental. /// This class provides the most efficient algorithm for the /// minimum mean cycle problem, though the best known theoretical /// bound on its running time is exponential. diff -r 48e17328c155 -r f63ba40a60f4 lemon/karp_mmc.h --- a/lemon/karp_mmc.h Sun Jan 29 22:33:14 2012 +0100 +++ b/lemon/karp_mmc.h Mon Jan 30 23:24:14 2012 +0100 @@ -98,7 +98,7 @@ /// /// This class implements Karp's algorithm for finding a directed /// cycle of minimum mean cost in a digraph - /// \ref amo93networkflows, \ref dasdan98minmeancycle. + /// \ref karp78characterization, \ref dasdan98minmeancycle. /// It runs in time O(ne) and uses space O(n2+e). /// /// \tparam GR The type of the digraph the algorithm runs on.