doc/groups.dox
changeset 803 53bea38f71cb
parent 789 8e68671af789
child 817 432c54cec63c
equal deleted inserted replaced
39:ac0ff3b0658b 40:11af8506a790
   314 @defgroup search Graph Search
   314 @defgroup search Graph Search
   315 @ingroup algs
   315 @ingroup algs
   316 \brief Common graph search algorithms.
   316 \brief Common graph search algorithms.
   317 
   317 
   318 This group contains the common graph search algorithms, namely
   318 This 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.
   320 */
   321 */
   321 
   322 
   322 /**
   323 /**
   323 @defgroup shortest_path Shortest Path Algorithms
   324 @defgroup shortest_path Shortest Path Algorithms
   324 @ingroup algs
   325 @ingroup algs
   325 \brief Algorithms for finding shortest paths.
   326 \brief Algorithms for finding shortest paths.
   326 
   327 
   327 This group contains the algorithms for finding shortest paths in digraphs.
   328 This group contains the algorithms for finding shortest paths in digraphs
       
   329 \ref clrs01algorithms.
   328 
   330 
   329  - \ref Dijkstra algorithm for finding shortest paths from a source node
   331  - \ref Dijkstra algorithm for finding shortest paths from a source node
   330    when all arc lengths are non-negative.
   332    when all arc lengths are non-negative.
   331  - \ref BellmanFord "Bellman-Ford" algorithm for finding shortest paths
   333  - \ref BellmanFord "Bellman-Ford" algorithm for finding shortest paths
   332    from a source node when arc lenghts can be either positive or negative,
   334    from a source node when arc lenghts can be either positive or negative,
   344 @defgroup spantree Minimum Spanning Tree Algorithms
   346 @defgroup spantree Minimum Spanning Tree Algorithms
   345 @ingroup algs
   347 @ingroup algs
   346 \brief Algorithms for finding minimum cost spanning trees and arborescences.
   348 \brief Algorithms for finding minimum cost spanning trees and arborescences.
   347 
   349 
   348 This group contains the algorithms for finding minimum cost spanning
   350 This group contains the algorithms for finding minimum cost spanning
   349 trees and arborescences.
   351 trees and arborescences \ref clrs01algorithms.
   350 */
   352 */
   351 
   353 
   352 /**
   354 /**
   353 @defgroup max_flow Maximum Flow Algorithms
   355 @defgroup max_flow Maximum Flow Algorithms
   354 @ingroup algs
   356 @ingroup algs
   355 \brief Algorithms for finding maximum flows.
   357 \brief Algorithms for finding maximum flows.
   356 
   358 
   357 This group contains the algorithms for finding maximum flows and
   359 This group contains the algorithms for finding maximum flows and
   358 feasible circulations.
   360 feasible circulations \ref clrs01algorithms, \ref amo93networkflows.
   359 
   361 
   360 The \e maximum \e flow \e problem is to find a flow of maximum value between
   362 The \e maximum \e flow \e problem is to find a flow of maximum value between
   361 a single source and a single target. Formally, there is a \f$G=(V,A)\f$
   363 a single source and a single target. Formally, there is a \f$G=(V,A)\f$
   362 digraph, a \f$cap: A\rightarrow\mathbf{R}^+_0\f$ capacity function and
   364 digraph, a \f$cap: A\rightarrow\mathbf{R}^+_0\f$ capacity function and
   363 \f$s, t \in V\f$ source and target nodes.
   365 \f$s, t \in V\f$ source and target nodes.
   368 \f[ \sum_{uv\in A} f(uv) = \sum_{vu\in A} f(vu)
   370 \f[ \sum_{uv\in A} f(uv) = \sum_{vu\in A} f(vu)
   369     \quad \forall u\in V\setminus\{s,t\} \f]
   371     \quad \forall u\in V\setminus\{s,t\} \f]
   370 \f[ 0 \leq f(uv) \leq cap(uv) \quad \forall uv\in A \f]
   372 \f[ 0 \leq f(uv) \leq cap(uv) \quad \forall uv\in A \f]
   371 
   373 
   372 LEMON contains several algorithms for solving maximum flow problems:
   374 LEMON contains several algorithms for solving maximum flow problems:
   373 - \ref EdmondsKarp Edmonds-Karp algorithm.
   375 - \ref EdmondsKarp Edmonds-Karp algorithm
   374 - \ref Preflow Goldberg-Tarjan's preflow push-relabel algorithm.
   376   \ref edmondskarp72theoretical.
   375 - \ref DinitzSleatorTarjan Dinitz's blocking flow algorithm with dynamic trees.
   377 - \ref Preflow Goldberg-Tarjan's preflow push-relabel algorithm
   376 - \ref GoldbergTarjan Preflow push-relabel algorithm with dynamic trees.
   378   \ref goldberg88newapproach.
   377 
   379 - \ref DinitzSleatorTarjan Dinitz's blocking flow algorithm with dynamic trees
   378 In most cases the \ref Preflow "Preflow" algorithm provides the
   380   \ref dinic70algorithm, \ref sleator83dynamic.
       
   381 - \ref GoldbergTarjan !Preflow push-relabel algorithm with dynamic trees
       
   382   \ref goldberg88newapproach, \ref sleator83dynamic.
       
   383 
       
   384 In most cases the \ref Preflow algorithm provides the
   379 fastest method for computing a maximum flow. All implementations
   385 fastest method for computing a maximum flow. All implementations
   380 also provide functions to query the minimum cut, which is the dual
   386 also provide functions to query the minimum cut, which is the dual
   381 problem of maximum flow.
   387 problem of maximum flow.
   382 
   388 
   383 \ref Circulation is a preflow push-relabel algorithm implemented directly 
   389 \ref Circulation is a preflow push-relabel algorithm implemented directly 
   391 @ingroup algs
   397 @ingroup algs
   392 
   398 
   393 \brief Algorithms for finding minimum cost flows and circulations.
   399 \brief Algorithms for finding minimum cost flows and circulations.
   394 
   400 
   395 This group contains the algorithms for finding minimum cost flows and
   401 This group contains the algorithms for finding minimum cost flows and
   396 circulations. For more information about this problem and its dual
   402 circulations \ref amo93networkflows. For more information about this
   397 solution see \ref min_cost_flow "Minimum Cost Flow Problem".
   403 problem and its dual solution, see \ref min_cost_flow
       
   404 "Minimum Cost Flow Problem".
   398 
   405 
   399 LEMON contains several algorithms for this problem.
   406 LEMON contains several algorithms for this problem.
   400  - \ref NetworkSimplex Primal Network Simplex algorithm with various
   407  - \ref NetworkSimplex Primal Network Simplex algorithm with various
   401    pivot strategies.
   408    pivot strategies \ref dantzig63linearprog, \ref kellyoneill91netsimplex.
   402  - \ref CostScaling Push-Relabel and Augment-Relabel algorithms based on
   409  - \ref CostScaling Push-Relabel and Augment-Relabel algorithms based on
   403    cost scaling.
   410    cost scaling \ref goldberg90approximation, \ref goldberg97efficient,
       
   411    \ref bunnagel98efficient.
   404  - \ref CapacityScaling Successive Shortest %Path algorithm with optional
   412  - \ref CapacityScaling Successive Shortest %Path algorithm with optional
   405    capacity scaling.
   413    capacity scaling \ref edmondskarp72theoretical.
   406  - \ref CancelAndTighten The Cancel and Tighten algorithm.
   414  - \ref CancelAndTighten The Cancel and Tighten algorithm
   407  - \ref CycleCanceling Cycle-Canceling algorithms.
   415    \ref goldberg89cyclecanceling.
       
   416  - \ref CycleCanceling Cycle-Canceling algorithms
       
   417    \ref klein67primal, \ref goldberg89cyclecanceling.
   408 
   418 
   409 In general NetworkSimplex is the most efficient implementation,
   419 In general NetworkSimplex is the most efficient implementation,
   410 but in special cases other algorithms could be faster.
   420 but in special cases other algorithms could be faster.
   411 For example, if the total supply and/or capacities are rather small,
   421 For example, if the total supply and/or capacities are rather small,
   412 CapacityScaling is usually the fastest algorithm (without effective scaling).
   422 CapacityScaling is usually the fastest algorithm (without effective scaling).
   532 This group contains some general optimization frameworks
   542 This group contains some general optimization frameworks
   533 implemented in LEMON.
   543 implemented in LEMON.
   534 */
   544 */
   535 
   545 
   536 /**
   546 /**
   537 @defgroup lp_group Lp and Mip Solvers
   547 @defgroup lp_group LP and MIP Solvers
   538 @ingroup gen_opt_group
   548 @ingroup gen_opt_group
   539 \brief Lp and Mip solver interfaces for LEMON.
   549 \brief LP and MIP solver interfaces for LEMON.
   540 
   550 
   541 This group contains Lp and Mip solver interfaces for LEMON. The
   551 This group contains LP and MIP solver interfaces for LEMON.
   542 various LP solvers could be used in the same manner with this
   552 Various LP solvers could be used in the same manner with this
   543 interface.
   553 high-level interface.
       
   554 
       
   555 The currently supported solvers are \ref glpk, \ref clp, \ref cbc,
       
   556 \ref cplex, \ref soplex.
   544 */
   557 */
   545 
   558 
   546 /**
   559 /**
   547 @defgroup lp_utils Tools for Lp and Mip Solvers
   560 @defgroup lp_utils Tools for Lp and Mip Solvers
   548 @ingroup lp_group
   561 @ingroup lp_group