# HG changeset patch
# User Peter Kovacs
# 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/doc/groups.dox
+++ b/doc/groups.dox
@@ 316,7 +316,8 @@
\brief Common graph search algorithms.
This group contains the common graph search algorithms, namely
\e breadthfirst \e search (BFS) and \e depthfirst \e search (DFS).
+\e breadthfirst \e search (BFS) and \e depthfirst \e search (DFS)
+\ref clrs01algorithms.
*/
/**
@@ 324,7 +325,8 @@
@ingroup algs
\brief Algorithms for finding shortest paths.
This group contains the algorithms for finding shortest paths in digraphs.
+This group contains the algorithms for finding shortest paths in digraphs
+\ref clrs01algorithms.
 \ref Dijkstra algorithm for finding shortest paths from a source node
when all arc lengths are nonnegative.
@@ 346,7 +348,7 @@
\brief Algorithms for finding minimum cost spanning trees and arborescences.
This group contains the algorithms for finding minimum cost spanning
trees and arborescences.
+trees and arborescences \ref clrs01algorithms.
*/
/**
@@ 355,7 +357,7 @@
\brief Algorithms for finding maximum flows.
This group contains the algorithms for finding maximum flows and
feasible circulations.
+feasible circulations \ref clrs01algorithms, \ref amo93networkflows.
The \e maximum \e flow \e problem is to find a flow of maximum value between
a single source and a single target. Formally, there is a \f$G=(V,A)\f$
@@ 370,12 +372,16 @@
\f[ 0 \leq f(uv) \leq cap(uv) \quad \forall uv\in A \f]
LEMON contains several algorithms for solving maximum flow problems:
 \ref EdmondsKarp EdmondsKarp algorithm.
 \ref Preflow GoldbergTarjan's preflow pushrelabel algorithm.
 \ref DinitzSleatorTarjan Dinitz's blocking flow algorithm with dynamic trees.
 \ref GoldbergTarjan Preflow pushrelabel algorithm with dynamic trees.
+ \ref EdmondsKarp EdmondsKarp algorithm
+ \ref edmondskarp72theoretical.
+ \ref Preflow GoldbergTarjan's preflow pushrelabel algorithm
+ \ref goldberg88newapproach.
+ \ref DinitzSleatorTarjan Dinitz's blocking flow algorithm with dynamic trees
+ \ref dinic70algorithm, \ref sleator83dynamic.
+ \ref GoldbergTarjan !Preflow pushrelabel algorithm with dynamic trees
+ \ref goldberg88newapproach, \ref sleator83dynamic.
In most cases the \ref Preflow "Preflow" algorithm provides the
+In most cases the \ref Preflow algorithm provides the
fastest method for computing a maximum flow. All implementations
also provide functions to query the minimum cut, which is the dual
problem of maximum flow.
@@ 393,18 +399,22 @@
\brief Algorithms for finding minimum cost flows and circulations.
This group contains the algorithms for finding minimum cost flows and
circulations. For more information about this problem and its dual
solution see \ref min_cost_flow "Minimum Cost Flow Problem".
+circulations \ref amo93networkflows. For more information about this
+problem and its dual solution, see \ref min_cost_flow
+"Minimum Cost Flow Problem".
LEMON contains several algorithms for this problem.
 \ref NetworkSimplex Primal Network Simplex algorithm with various
 pivot strategies.
+ pivot strategies \ref dantzig63linearprog, \ref kellyoneill91netsimplex.
 \ref CostScaling PushRelabel and AugmentRelabel algorithms based on
 cost scaling.
+ cost scaling \ref goldberg90approximation, \ref goldberg97efficient,
+ \ref bunnagel98efficient.
 \ref CapacityScaling Successive Shortest %Path algorithm with optional
 capacity scaling.
  \ref CancelAndTighten The Cancel and Tighten algorithm.
  \ref CycleCanceling CycleCanceling algorithms.
+ capacity scaling \ref edmondskarp72theoretical.
+  \ref CancelAndTighten The Cancel and Tighten algorithm
+ \ref goldberg89cyclecanceling.
+  \ref CycleCanceling CycleCanceling algorithms
+ \ref klein67primal, \ref goldberg89cyclecanceling.
In general NetworkSimplex is the most efficient implementation,
but in special cases other algorithms could be faster.
@@ 534,13 +544,16 @@
*/
/**
@defgroup lp_group Lp and Mip Solvers
+@defgroup lp_group LP and MIP Solvers
@ingroup gen_opt_group
\brief Lp and Mip solver interfaces for LEMON.
+\brief LP and MIP solver interfaces for LEMON.
This group contains Lp and Mip solver interfaces for LEMON. The
various LP solvers could be used in the same manner with this
interface.
+This group contains LP and MIP solver interfaces for LEMON.
+Various LP solvers could be used in the same manner with this
+highlevel interface.
+
+The currently supported solvers are \ref glpk, \ref clp, \ref cbc,
+\ref cplex, \ref soplex.
*/
/**
diff git a/doc/mainpage.dox b/doc/mainpage.dox
 a/doc/mainpage.dox
+++ b/doc/mainpage.dox
@@ 21,14 +21,11 @@
\section intro Introduction
\subsection whatis What is LEMON

LEMON stands for Library for Efficient Modeling
and Optimization in Networks.
It is a C++ template
library aimed at combinatorial optimization tasks which
often involve in working
with graphs.
+LEMON stands for Library for Efficient Modeling
+and Optimization in Networks.
+It is a C++ template library providing efficient implementation of common
+data structures and algorithms with focus on combinatorial optimization
+problems in graphs and networks.
LEMON is an open source
@@ 38,7 +35,16 @@
\ref license "license terms".
\subsection howtoread How to read the documentation
+The project is maintained by the
+Egerváry Research Group on
+Combinatorial Optimization \ref egres
+at the Operations Research Department of the
+Eötvös Loránd University,
+Budapest, Hungary.
+LEMON is also a member of the COINOR
+initiative \ref coinor.
+
+\section howtoread How to Read the Documentation
If you would like to get to know the library, see
LEMON Tutorial.
diff git a/doc/min_cost_flow.dox b/doc/min_cost_flow.dox
 a/doc/min_cost_flow.dox
+++ b/doc/min_cost_flow.dox
@@ 26,7 +26,7 @@
The \e minimum \e cost \e flow \e problem is to find a feasible flow of
minimum total cost from a set of supply nodes to a set of demand nodes
in a network with capacity constraints (lower and upper bounds)
and arc costs.
+and arc costs \ref amo93networkflows.
Formally, let \f$G=(V,A)\f$ be a digraph, \f$lower: A\rightarrow\mathbf{R}\f$,
\f$upper: A\rightarrow\mathbf{R}\cup\{+\infty\}\f$ denote the lower and
diff git a/doc/references.bib b/doc/references.bib
 a/doc/references.bib
+++ b/doc/references.bib
@@ 15,41 +15,6 @@
}
%%%%% Other libraries %%%%%%

@misc{boost,
 key = {Boost},
 title = {{B}oost {C++} {L}ibraries},
 url = {http://www.boost.org/}
}

@book{bglbook,
 author = {Jeremy G. Siek and LeeQuan Lee and Andrew
 Lumsdaine},
 title = {The Boost Graph Library: User Guide and Reference
 Manual},
 publisher = {AddisonWesley},
 year = 2002
}

@misc{leda,
 key = {LEDA},
 title = {{LEDA}  {L}ibrary of {E}fficient {D}ata {T}ypes and
 {A}lgorithms},
 url = {http://www.algorithmicsolutions.com/}
}

@book{ledabook,
 author = {Kurt Mehlhorn and Stefan N{\"a}her},
 title = {{LEDA}: {A} platform for combinatorial and geometric
 computing},
 isbn = {0521563291},
 publisher = {Cambridge University Press},
 address = {New York, NY, USA},
 year = 1999
}


%%%%% Tools that LEMON depends on %%%%%
@misc{cmake,
@@ 142,15 +107,25 @@
%%%%% Maximum flow algorithms %%%%%
@inproceedings{goldberg86newapproach,
+@article{edmondskarp72theoretical,
+ author = {Jack Edmonds and Richard M. Karp},
+ title = {Theoretical improvements in algorithmic efficiency
+ for network flow problems},
+ journal = {Journal of the ACM},
+ year = 1972,
+ volume = 19,
+ number = 2,
+ pages = {248264}
+}
+
+@article{goldberg88newapproach,
author = {Andrew V. Goldberg and Robert E. Tarjan},
title = {A new approach to the maximum flow problem},
 booktitle = {STOC '86: Proceedings of the Eighteenth Annual ACM
 Symposium on Theory of Computing},
 year = 1986,
 publisher = {ACM Press},
 address = {New York, NY},
 pages = {136146}
+ journal = {Journal of the ACM},
+ year = 1988,
+ volume = 35,
+ number = 4,
+ pages = {921940}
}
@article{dinic70algorithm,
@@ 221,42 +196,18 @@
pages = {205220}
}
@inproceedings{goldberg88cyclecanceling,
+@article{goldberg89cyclecanceling,
author = {Andrew V. Goldberg and Robert E. Tarjan},
title = {Finding minimumcost circulations by canceling
negative cycles},
 booktitle = {STOC '88: Proceedings of the Twentieth Annual ACM
 Symposium on Theory of Computing},
 year = 1988,
 publisher = {ACM Press},
 address = {New York, NY},
 pages = {388397}
+ journal = {Journal of the ACM},
+ year = 1989,
+ volume = 36,
+ number = 4,
+ pages = {873886}
}
@article{edmondskarp72theoretical,
 author = {Jack Edmonds and Richard M. Karp},
 title = {Theoretical improvements in algorithmic efficiency
 for network flow problems},
 journal = {Journal of the ACM},
 year = 1972,
 volume = 19,
 number = 2,
 pages = {248264}
}

@inproceedings{goldberg87approximation,
 author = {Andrew V. Goldberg and Robert E. Tarjan},
 title = {Solving minimumcost flow problems by successive
 approximation},
 booktitle = {STOC '87: Proceedings of the Nineteenth Annual ACM
 Symposium on Theory of Computing},
 year = 1987,
 publisher = {ACM Press},
 address = {New York, NY},
 pages = {718}
}

@article{goldberg90finding,
+@article{goldberg90approximation,
author = {Andrew V. Goldberg and Robert E. Tarjan},
title = {Finding MinimumCost Circulations by Successive
Approximation},
@@ 289,6 +240,13 @@
pages = {157174}
}
+@book{dantzig63linearprog,
+ author = {George B. Dantzig},
+ title = {Linear Programming and Extensions},
+ publisher = {Princeton University Press},
+ year = 1963
+}
+
@mastersthesis{kellyoneill91netsimplex,
author = {Damian J. Kelly and Garrett M. O'Neill},
title = {The Minimum Cost Flow Problem and The Network
@@ 298,25 +256,3 @@
year = 1991,
month = sep,
}

@techreport{lobel96networksimplex,
 author = {Andreas L{\"o}bel},
 title = {Solving largescale realworld minimumcost flow
 problems by a network simplex method},
 institution = {KonradZuseZentrum fur Informationstechnik Berlin
 ({ZIB})},
 address = {Berlin, Germany},
 year = 1996,
 number = {SC 967}
}

@article{frangioni06computational,
 author = {Antonio Frangioni and Antonio Manca},
 title = {A Computational Study of Cost Reoptimization for
 MinCost Flow Problems},
 journal = {INFORMS Journal On Computing},
 year = 2006,
 volume = 18,
 number = 1,
 pages = {6170}
}
diff git a/lemon/network_simplex.h b/lemon/network_simplex.h
 a/lemon/network_simplex.h
+++ b/lemon/network_simplex.h
@@ 40,7 +40,9 @@
/// for finding a \ref min_cost_flow "minimum cost flow".
///
/// \ref NetworkSimplex implements the primal Network Simplex algorithm
 /// for finding a \ref min_cost_flow "minimum cost flow".
+ /// for finding a \ref min_cost_flow "minimum cost flow"
+ /// \ref amo93networkflows, \ref dantzig63linearprog,
+ /// \ref kellyoneill91netsimplex.
/// This algorithm is a specialized version of the linear programming
/// simplex method directly for the minimum cost flow problem.
/// It is one of the most efficient solution methods.
diff git a/lemon/preflow.h b/lemon/preflow.h
 a/lemon/preflow.h
+++ b/lemon/preflow.h
@@ 102,7 +102,8 @@
///
/// This class provides an implementation of GoldbergTarjan's \e preflow
/// \e pushrelabel algorithm producing a \ref max_flow
 /// "flow of maximum value" in a digraph.
+ /// "flow of maximum value" in a digraph \ref clrs01algorithms,
+ /// \ref amo93networkflows, \ref goldberg88newapproach.
/// The preflow algorithms are the fastest known maximum
/// flow algorithms. The current implementation uses a mixture of the
/// \e "highest label" and the \e "bound decrease" heuristics.