COIN-OR::LEMON - Graph Library

Ticket #184: 184-2-1de05cf355c5.patch

File 184-2-1de05cf355c5.patch, 13.3 KB (added by Peter Kovacs, 15 years ago)
  • doc/groups.dox

    # HG changeset patch
    # User Peter Kovacs <kpeter@inf.elte.hu>
    # Date 1255060637 -7200
    # Node ID 1de05cf355c5b109b6fbe46a0ebb163473027ad9
    # Parent  420e33e371205619e1feff24f0c2725d31e09203
    Insert citations into the doc (#184)
    
     - Add general citations to modules.
     - Add specific citations for max flow and min cost flow algorithms.
     - Add citations for the supported LP and MIP solvers.
     - Extend the main page.
     - Replace inproceedings entries with the journal versions.
     - Add a new entry about network simplex.
     - Remove uncited (and potentially unwanted) entries.
    
    diff --git a/doc/groups.dox b/doc/groups.dox
    a b  
    316316\brief Common graph search algorithms.
    317317
    318318This group contains the common graph search algorithms, namely
    319 \e breadth-first \e search (BFS) and \e depth-first \e search (DFS).
     319\e breadth-first \e search (BFS) and \e depth-first \e search (DFS)
     320\ref clrs01algorithms.
    320321*/
    321322
    322323/**
     
    324325@ingroup algs
    325326\brief Algorithms for finding shortest paths.
    326327
    327 This group contains the algorithms for finding shortest paths in digraphs.
     328This group contains the algorithms for finding shortest paths in digraphs
     329\ref clrs01algorithms.
    328330
    329331 - \ref Dijkstra algorithm for finding shortest paths from a source node
    330332   when all arc lengths are non-negative.
     
    346348\brief Algorithms for finding minimum cost spanning trees and arborescences.
    347349
    348350This group contains the algorithms for finding minimum cost spanning
    349 trees and arborescences.
     351trees and arborescences \ref clrs01algorithms.
    350352*/
    351353
    352354/**
     
    355357\brief Algorithms for finding maximum flows.
    356358
    357359This group contains the algorithms for finding maximum flows and
    358 feasible circulations.
     360feasible circulations \ref clrs01algorithms, \ref amo93networkflows.
    359361
    360362The \e maximum \e flow \e problem is to find a flow of maximum value between
    361363a single source and a single target. Formally, there is a \f$G=(V,A)\f$
     
    370372\f[ 0 \leq f(uv) \leq cap(uv) \quad \forall uv\in A \f]
    371373
    372374LEMON contains several algorithms for solving maximum flow problems:
    373 - \ref EdmondsKarp Edmonds-Karp algorithm.
    374 - \ref Preflow Goldberg-Tarjan's preflow push-relabel algorithm.
    375 - \ref DinitzSleatorTarjan Dinitz's blocking flow algorithm with dynamic trees.
    376 - \ref GoldbergTarjan Preflow push-relabel algorithm with dynamic trees.
     375- \ref EdmondsKarp Edmonds-Karp algorithm
     376  \ref edmondskarp72theoretical.
     377- \ref Preflow Goldberg-Tarjan's preflow push-relabel algorithm
     378  \ref goldberg88newapproach.
     379- \ref DinitzSleatorTarjan Dinitz's blocking flow algorithm with dynamic trees
     380  \ref dinic70algorithm, \ref sleator83dynamic.
     381- \ref GoldbergTarjan !Preflow push-relabel algorithm with dynamic trees
     382  \ref goldberg88newapproach, \ref sleator83dynamic.
    377383
    378 In most cases the \ref Preflow "Preflow" algorithm provides the
     384In most cases the \ref Preflow algorithm provides the
    379385fastest method for computing a maximum flow. All implementations
    380386also provide functions to query the minimum cut, which is the dual
    381387problem of maximum flow.
     
    393399\brief Algorithms for finding minimum cost flows and circulations.
    394400
    395401This group contains the algorithms for finding minimum cost flows and
    396 circulations. For more information about this problem and its dual
    397 solution see \ref min_cost_flow "Minimum Cost Flow Problem".
     402circulations \ref amo93networkflows. For more information about this
     403problem and its dual solution, see \ref min_cost_flow
     404"Minimum Cost Flow Problem".
    398405
    399406LEMON contains several algorithms for this problem.
    400407 - \ref NetworkSimplex Primal Network Simplex algorithm with various
    401    pivot strategies.
     408   pivot strategies \ref dantzig63linearprog, \ref kellyoneill91netsimplex.
    402409 - \ref CostScaling Push-Relabel and Augment-Relabel algorithms based on
    403    cost scaling.
     410   cost scaling \ref goldberg90approximation, \ref goldberg97efficient,
     411   \ref bunnagel98efficient.
    404412 - \ref CapacityScaling Successive Shortest %Path algorithm with optional
    405    capacity scaling.
    406  - \ref CancelAndTighten The Cancel and Tighten algorithm.
    407  - \ref CycleCanceling Cycle-Canceling algorithms.
     413   capacity scaling \ref edmondskarp72theoretical.
     414 - \ref CancelAndTighten The Cancel and Tighten algorithm
     415   \ref goldberg89cyclecanceling.
     416 - \ref CycleCanceling Cycle-Canceling algorithms
     417   \ref klein67primal, \ref goldberg89cyclecanceling.
    408418
    409419In general NetworkSimplex is the most efficient implementation,
    410420but in special cases other algorithms could be faster.
     
    534544*/
    535545
    536546/**
    537 @defgroup lp_group Lp and Mip Solvers
     547@defgroup lp_group LP and MIP Solvers
    538548@ingroup gen_opt_group
    539 \brief Lp and Mip solver interfaces for LEMON.
     549\brief LP and MIP solver interfaces for LEMON.
    540550
    541 This group contains Lp and Mip solver interfaces for LEMON. The
    542 various LP solvers could be used in the same manner with this
    543 interface.
     551This group contains LP and MIP solver interfaces for LEMON.
     552Various LP solvers could be used in the same manner with this
     553high-level interface.
     554
     555The currently supported solvers are \ref glpk, \ref clp, \ref cbc,
     556\ref cplex, \ref soplex.
    544557*/
    545558
    546559/**
  • doc/mainpage.dox

    diff --git a/doc/mainpage.dox b/doc/mainpage.dox
    a b  
    2121
    2222\section intro Introduction
    2323
    24 \subsection whatis What is LEMON
    25 
    26 LEMON stands for <b>L</b>ibrary for <b>E</b>fficient <b>M</b>odeling
    27 and <b>O</b>ptimization in <b>N</b>etworks.
    28 It is a C++ template
    29 library aimed at combinatorial optimization tasks which
    30 often involve in working
    31 with graphs.
     24<b>LEMON</b> stands for <i><b>L</b>ibrary for <b>E</b>fficient <b>M</b>odeling
     25and <b>O</b>ptimization in <b>N</b>etworks</i>.
     26It is a C++ template library providing efficient implementation of common
     27data structures and algorithms with focus on combinatorial optimization
     28problems in graphs and networks.
    3229
    3330<b>
    3431LEMON is an <a class="el" href="http://opensource.org/">open&nbsp;source</a>
     
    3835\ref license "license terms".
    3936</b>
    4037
    41 \subsection howtoread How to read the documentation
     38The project is maintained by the
     39<a href="http://www.cs.elte.hu/egres/">Egerv&aacute;ry Research Group on
     40Combinatorial Optimization</a> \ref egres
     41at the Operations Research Department of the
     42<a href="http://www.elte.hu/">E&ouml;tv&ouml;s Lor&aacute;nd University,
     43Budapest</a>, Hungary.
     44LEMON is also a member of the <a href="http://www.coin-or.org/">COIN-OR</a>
     45initiative \ref coinor.
     46
     47\section howtoread How to Read the Documentation
    4248
    4349If you would like to get to know the library, see
    4450<a class="el" href="http://lemon.cs.elte.hu/pub/tutorial/">LEMON Tutorial</a>.
  • doc/min_cost_flow.dox

    diff --git a/doc/min_cost_flow.dox b/doc/min_cost_flow.dox
    a b  
    2626The \e minimum \e cost \e flow \e problem is to find a feasible flow of
    2727minimum total cost from a set of supply nodes to a set of demand nodes
    2828in a network with capacity constraints (lower and upper bounds)
    29 and arc costs.
     29and arc costs \ref amo93networkflows.
    3030
    3131Formally, let \f$G=(V,A)\f$ be a digraph, \f$lower: A\rightarrow\mathbf{R}\f$,
    3232\f$upper: A\rightarrow\mathbf{R}\cup\{+\infty\}\f$ denote the lower and
  • doc/references.bib

    diff --git a/doc/references.bib b/doc/references.bib
    a b  
    1515}
    1616
    1717
    18 %%%%% Other libraries %%%%%%
    19 
    20 @misc{boost,
    21   key =          {Boost},
    22   title =        {{B}oost {C++} {L}ibraries},
    23   url =          {http://www.boost.org/}
    24 }
    25 
    26 @book{bglbook,
    27   author =       {Jeremy G. Siek and Lee-Quan Lee and Andrew
    28                   Lumsdaine},
    29   title =        {The Boost Graph Library: User Guide and Reference
    30                   Manual},
    31   publisher =    {Addison-Wesley},
    32   year =         2002
    33 }
    34 
    35 @misc{leda,
    36   key =          {LEDA},
    37   title =        {{LEDA} -- {L}ibrary of {E}fficient {D}ata {T}ypes and
    38                   {A}lgorithms},
    39   url =          {http://www.algorithmic-solutions.com/}
    40 }
    41 
    42 @book{ledabook,
    43   author =       {Kurt Mehlhorn and Stefan N{\"a}her},
    44   title =        {{LEDA}: {A} platform for combinatorial and geometric
    45                   computing},
    46   isbn =         {0-521-56329-1},
    47   publisher =    {Cambridge University Press},
    48   address =      {New York, NY, USA},
    49   year =         1999
    50 }
    51 
    52 
    5318%%%%% Tools that LEMON depends on %%%%%
    5419
    5520@misc{cmake,
     
    142107
    143108%%%%% Maximum flow algorithms %%%%%
    144109
    145 @inproceedings{goldberg86newapproach,
     110@article{edmondskarp72theoretical,
     111  author =       {Jack Edmonds and Richard M. Karp},
     112  title =        {Theoretical improvements in algorithmic efficiency
     113                  for network flow problems},
     114  journal =      {Journal of the ACM},
     115  year =         1972,
     116  volume =       19,
     117  number =       2,
     118  pages =        {248-264}
     119}
     120
     121@article{goldberg88newapproach,
    146122  author =       {Andrew V. Goldberg and Robert E. Tarjan},
    147123  title =        {A new approach to the maximum flow problem},
    148   booktitle =    {STOC '86: Proceedings of the Eighteenth Annual ACM
    149                   Symposium on Theory of Computing},
    150   year =         1986,
    151   publisher =    {ACM Press},
    152   address =      {New York, NY},
    153   pages =        {136-146}
     124  journal =      {Journal of the ACM},
     125  year =         1988,
     126  volume =       35,
     127  number =       4,
     128  pages =        {921-940}
    154129}
    155130
    156131@article{dinic70algorithm,
     
    221196  pages =        {205-220}
    222197}
    223198
    224 @inproceedings{goldberg88cyclecanceling,
     199@article{goldberg89cyclecanceling,
    225200  author =       {Andrew V. Goldberg and Robert E. Tarjan},
    226201  title =        {Finding minimum-cost circulations by canceling
    227202                  negative cycles},
    228   booktitle =    {STOC '88: Proceedings of the Twentieth Annual ACM
    229                   Symposium on Theory of Computing},
    230   year =         1988,
    231   publisher =    {ACM Press},
    232   address =      {New York, NY},
    233   pages =        {388-397}
     203  journal =      {Journal of the ACM},
     204  year =         1989,
     205  volume =       36,
     206  number =       4,
     207  pages =        {873-886}
    234208}
    235209
    236 @article{edmondskarp72theoretical,
    237   author =       {Jack Edmonds and Richard M. Karp},
    238   title =        {Theoretical improvements in algorithmic efficiency
    239                   for network flow problems},
    240   journal =      {Journal of the ACM},
    241   year =         1972,
    242   volume =       19,
    243   number =       2,
    244   pages =        {248-264}
    245 }
    246 
    247 @inproceedings{goldberg87approximation,
    248   author =       {Andrew V. Goldberg and Robert E. Tarjan},
    249   title =        {Solving minimum-cost flow problems by successive
    250                   approximation},
    251   booktitle =    {STOC '87: Proceedings of the Nineteenth Annual ACM
    252                   Symposium on Theory of Computing},
    253   year =         1987,
    254   publisher =    {ACM Press},
    255   address =      {New York, NY},
    256   pages =        {7-18}
    257 }
    258 
    259 @article{goldberg90finding,
     210@article{goldberg90approximation,
    260211  author =       {Andrew V. Goldberg and Robert E. Tarjan},
    261212  title =        {Finding Minimum-Cost Circulations by Successive
    262213                  Approximation},
     
    289240  pages =        {157-174}
    290241}
    291242
     243@book{dantzig63linearprog,
     244  author =       {George B. Dantzig},
     245  title =        {Linear Programming and Extensions},
     246  publisher =    {Princeton University Press},
     247  year =         1963
     248}
     249
    292250@mastersthesis{kellyoneill91netsimplex,
    293251  author =       {Damian J. Kelly and Garrett M. O'Neill},
    294252  title =        {The Minimum Cost Flow Problem and The Network
     
    298256  year =         1991,
    299257  month =        sep,
    300258}
    301 
    302 @techreport{lobel96networksimplex,
    303   author =       {Andreas L{\"o}bel},
    304   title =        {Solving large-scale real-world minimum-cost flow
    305                   problems by a network simplex method},
    306   institution =  {Konrad-Zuse-Zentrum fur Informationstechnik Berlin
    307                   ({ZIB})},
    308   address =      {Berlin, Germany},
    309   year =         1996,
    310   number =       {SC 96-7}
    311 }
    312 
    313 @article{frangioni06computational,
    314   author =       {Antonio Frangioni and Antonio Manca},
    315   title =        {A Computational Study of Cost Reoptimization for
    316                   Min-Cost Flow Problems},
    317   journal =      {INFORMS Journal On Computing},
    318   year =         2006,
    319   volume =       18,
    320   number =       1,
    321   pages =        {61-70}
    322 }
  • lemon/network_simplex.h

    diff --git a/lemon/network_simplex.h b/lemon/network_simplex.h
    a b  
    4040  /// for finding a \ref min_cost_flow "minimum cost flow".
    4141  ///
    4242  /// \ref NetworkSimplex implements the primal Network Simplex algorithm
    43   /// for finding a \ref min_cost_flow "minimum cost flow".
     43  /// for finding a \ref min_cost_flow "minimum cost flow"
     44  /// \ref amo93networkflows, \ref dantzig63linearprog,
     45  /// \ref kellyoneill91netsimplex.
    4446  /// This algorithm is a specialized version of the linear programming
    4547  /// simplex method directly for the minimum cost flow problem.
    4648  /// It is one of the most efficient solution methods.
  • lemon/preflow.h

    diff --git a/lemon/preflow.h b/lemon/preflow.h
    a b  
    102102  ///
    103103  /// This class provides an implementation of Goldberg-Tarjan's \e preflow
    104104  /// \e push-relabel algorithm producing a \ref max_flow
    105   /// "flow of maximum value" in a digraph.
     105  /// "flow of maximum value" in a digraph \ref clrs01algorithms,
     106  /// \ref amo93networkflows, \ref goldberg88newapproach.
    106107  /// The preflow algorithms are the fastest known maximum
    107108  /// flow algorithms. The current implementation uses a mixture of the
    108109  /// \e "highest label" and the \e "bound decrease" heuristics.