COIN-OR::LEMON - Graph Library

Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/groups.dox

    r418 r416  
    1616 *
    1717 */
    18 
    19 namespace lemon {
    2018
    2119/**
     
    164162
    165163This group describes maps that are specifically designed to assign
    166 values to the nodes and arcs/edges of graphs.
    167 
    168 If you are looking for the standard graph maps (\c NodeMap, \c ArcMap,
    169 \c EdgeMap), see the \ref graph_concepts "Graph Structure Concepts".
     164values to the nodes and arcs of graphs.
    170165*/
    171166
     
    178173maps from other maps.
    179174
    180 Most of them are \ref concepts::ReadMap "read-only maps".
     175Most of them are \ref lemon::concepts::ReadMap "read-only maps".
    181176They can make arithmetic and logical operations between one or two maps
    182177(negation, shifting, addition, multiplication, logical 'and', 'or',
     
    280275\brief Common graph search algorithms.
    281276
    282 This group describes the common graph search algorithms, namely
    283 \e breadth-first \e search (BFS) and \e depth-first \e search (DFS).
     277This group describes the common graph search algorithms like
     278Breadth-First Search (BFS) and Depth-First Search (DFS).
    284279*/
    285280
     
    289284\brief Algorithms for finding shortest paths.
    290285
    291 This group describes the algorithms for finding shortest paths in digraphs.
    292 
    293  - \ref Dijkstra algorithm for finding shortest paths from a source node
    294    when all arc lengths are non-negative.
    295  - \ref BellmanFord "Bellman-Ford" algorithm for finding shortest paths
    296    from a source node when arc lenghts can be either positive or negative,
    297    but the digraph should not contain directed cycles with negative total
    298    length.
    299  - \ref FloydWarshall "Floyd-Warshall" and \ref Johnson "Johnson" algorithms
    300    for solving the \e all-pairs \e shortest \e paths \e problem when arc
    301    lenghts can be either positive or negative, but the digraph should
    302    not contain directed cycles with negative total length.
    303  - \ref Suurballe A successive shortest path algorithm for finding
    304    arc-disjoint paths between two nodes having minimum total length.
     286This group describes the algorithms for finding shortest paths in graphs.
    305287*/
    306288
     
    313295feasible circulations.
    314296
    315 The \e maximum \e flow \e problem is to find a flow of maximum value between
    316 a single source and a single target. Formally, there is a \f$G=(V,A)\f$
    317 digraph, a \f$cap:A\rightarrow\mathbf{R}^+_0\f$ capacity function and
    318 \f$s, t \in V\f$ source and target nodes.
    319 A maximum flow is an \f$f:A\rightarrow\mathbf{R}^+_0\f$ solution of the
    320 following optimization problem.
    321 
    322 \f[ \max\sum_{a\in\delta_{out}(s)}f(a) - \sum_{a\in\delta_{in}(s)}f(a) \f]
    323 \f[ \sum_{a\in\delta_{out}(v)} f(a) = \sum_{a\in\delta_{in}(v)} f(a)
    324     \qquad \forall v\in V\setminus\{s,t\} \f]
    325 \f[ 0 \leq f(a) \leq cap(a) \qquad \forall a\in A \f]
     297The maximum flow problem is to find a flow between a single source and
     298a single target that is maximum. Formally, there is a \f$G=(V,A)\f$
     299directed graph, an \f$c_a:A\rightarrow\mathbf{R}^+_0\f$ capacity
     300function and given \f$s, t \in V\f$ source and target node. The
     301maximum flow is the \f$f_a\f$ solution of the next optimization problem:
     302
     303\f[ 0 \le f_a \le c_a \f]
     304\f[ \sum_{v\in\delta^{-}(u)}f_{vu}=\sum_{v\in\delta^{+}(u)}f_{uv}
     305\qquad \forall u \in V \setminus \{s,t\}\f]
     306\f[ \max \sum_{v\in\delta^{+}(s)}f_{uv} - \sum_{v\in\delta^{-}(s)}f_{vu}\f]
    326307
    327308LEMON contains several algorithms for solving maximum flow problems:
    328 - \ref EdmondsKarp Edmonds-Karp algorithm.
    329 - \ref Preflow Goldberg-Tarjan's preflow push-relabel algorithm.
    330 - \ref DinitzSleatorTarjan Dinitz's blocking flow algorithm with dynamic trees.
    331 - \ref GoldbergTarjan Preflow push-relabel algorithm with dynamic trees.
    332 
    333 In most cases the \ref Preflow "Preflow" algorithm provides the
    334 fastest method for computing a maximum flow. All implementations
    335 provides functions to also query the minimum cut, which is the dual
    336 problem of the maximum flow.
     309- \ref lemon::EdmondsKarp "Edmonds-Karp"
     310- \ref lemon::Preflow "Goldberg's Preflow algorithm"
     311- \ref lemon::DinitzSleatorTarjan "Dinitz's blocking flow algorithm with dynamic trees"
     312- \ref lemon::GoldbergTarjan "Preflow algorithm with dynamic trees"
     313
     314In most cases the \ref lemon::Preflow "Preflow" algorithm provides the
     315fastest method to compute the maximum flow. All impelementations
     316provides functions to query the minimum cut, which is the dual linear
     317programming problem of the maximum flow.
    337318*/
    338319
     
    345326This group describes the algorithms for finding minimum cost flows and
    346327circulations.
    347 
    348 The \e minimum \e cost \e flow \e problem is to find a feasible flow of
    349 minimum total cost from a set of supply nodes to a set of demand nodes
    350 in a network with capacity constraints and arc costs.
    351 Formally, let \f$G=(V,A)\f$ be a digraph,
    352 \f$lower, upper: A\rightarrow\mathbf{Z}^+_0\f$ denote the lower and
    353 upper bounds for the flow values on the arcs,
    354 \f$cost: A\rightarrow\mathbf{Z}^+_0\f$ denotes the cost per unit flow
    355 on the arcs, and
    356 \f$supply: V\rightarrow\mathbf{Z}\f$ denotes the supply/demand values
    357 of the nodes.
    358 A minimum cost flow is an \f$f:A\rightarrow\mathbf{R}^+_0\f$ solution of
    359 the following optimization problem.
    360 
    361 \f[ \min\sum_{a\in A} f(a) cost(a) \f]
    362 \f[ \sum_{a\in\delta_{out}(v)} f(a) - \sum_{a\in\delta_{in}(v)} f(a) =
    363     supply(v) \qquad \forall v\in V \f]
    364 \f[ lower(a) \leq f(a) \leq upper(a) \qquad \forall a\in A \f]
    365 
    366 LEMON contains several algorithms for solving minimum cost flow problems:
    367  - \ref CycleCanceling Cycle-canceling algorithms.
    368  - \ref CapacityScaling Successive shortest path algorithm with optional
    369    capacity scaling.
    370  - \ref CostScaling Push-relabel and augment-relabel algorithms based on
    371    cost scaling.
    372  - \ref NetworkSimplex Primal network simplex algorithm with various
    373    pivot strategies.
    374328*/
    375329
     
    382336This group describes the algorithms for finding minimum cut in graphs.
    383337
    384 The \e minimum \e cut \e problem is to find a non-empty and non-complete
    385 \f$X\f$ subset of the nodes with minimum overall capacity on
    386 outgoing arcs. Formally, there is a \f$G=(V,A)\f$ digraph, a
    387 \f$cap: A\rightarrow\mathbf{R}^+_0\f$ capacity function. The minimum
     338The minimum cut problem is to find a non-empty and non-complete
     339\f$X\f$ subset of the vertices with minimum overall capacity on
     340outgoing arcs. Formally, there is \f$G=(V,A)\f$ directed graph, an
     341\f$c_a:A\rightarrow\mathbf{R}^+_0\f$ capacity function. The minimum
    388342cut is the \f$X\f$ solution of the next optimization problem:
    389343
    390344\f[ \min_{X \subset V, X\not\in \{\emptyset, V\}}
    391     \sum_{uv\in A, u\in X, v\not\in X}cap(uv) \f]
     345\sum_{uv\in A, u\in X, v\not\in X}c_{uv}\f]
    392346
    393347LEMON contains several algorithms related to minimum cut problems:
    394348
    395 - \ref HaoOrlin "Hao-Orlin algorithm" for calculating minimum cut
    396   in directed graphs.
    397 - \ref NagamochiIbaraki "Nagamochi-Ibaraki algorithm" for
    398   calculating minimum cut in undirected graphs.
    399 - \ref GomoryHuTree "Gomory-Hu tree computation" for calculating
    400   all-pairs minimum cut in undirected graphs.
     349- \ref lemon::HaoOrlin "Hao-Orlin algorithm" to calculate minimum cut
     350  in directed graphs
     351- \ref lemon::NagamochiIbaraki "Nagamochi-Ibaraki algorithm" to
     352  calculate minimum cut in undirected graphs
     353- \ref lemon::GomoryHuTree "Gomory-Hu tree computation" to calculate all
     354  pairs minimum cut in undirected graphs
    401355
    402356If you want to find minimum cut just between two distinict nodes,
    403 see the \ref max_flow "maximum flow problem".
     357please see the \ref max_flow "Maximum Flow page".
    404358*/
    405359
     
    440394graphs.  The matching problems in bipartite graphs are generally
    441395easier than in general graphs. The goal of the matching optimization
    442 can be finding maximum cardinality, maximum weight or minimum cost
     396can be the finding maximum cardinality, maximum weight or minimum cost
    443397matching. The search can be constrained to find perfect or
    444398maximum cardinality matching.
    445399
    446 The matching algorithms implemented in LEMON:
    447 - \ref MaxBipartiteMatching Hopcroft-Karp augmenting path algorithm
    448   for calculating maximum cardinality matching in bipartite graphs.
    449 - \ref PrBipartiteMatching Push-relabel algorithm
    450   for calculating maximum cardinality matching in bipartite graphs.
    451 - \ref MaxWeightedBipartiteMatching
    452   Successive shortest path algorithm for calculating maximum weighted
    453   matching and maximum weighted bipartite matching in bipartite graphs.
    454 - \ref MinCostMaxBipartiteMatching
    455   Successive shortest path algorithm for calculating minimum cost maximum
    456   matching in bipartite graphs.
    457 - \ref MaxMatching Edmond's blossom shrinking algorithm for calculating
    458   maximum cardinality matching in general graphs.
    459 - \ref MaxWeightedMatching Edmond's blossom shrinking algorithm for calculating
    460   maximum weighted matching in general graphs.
    461 - \ref MaxWeightedPerfectMatching
    462   Edmond's blossom shrinking algorithm for calculating maximum weighted
    463   perfect matching in general graphs.
     400LEMON contains the next algorithms:
     401- \ref lemon::MaxBipartiteMatching "MaxBipartiteMatching" Hopcroft-Karp
     402  augmenting path algorithm for calculate maximum cardinality matching in
     403  bipartite graphs
     404- \ref lemon::PrBipartiteMatching "PrBipartiteMatching" Push-Relabel
     405  algorithm for calculate maximum cardinality matching in bipartite graphs
     406- \ref lemon::MaxWeightedBipartiteMatching "MaxWeightedBipartiteMatching"
     407  Successive shortest path algorithm for calculate maximum weighted matching
     408  and maximum weighted bipartite matching in bipartite graph
     409- \ref lemon::MinCostMaxBipartiteMatching "MinCostMaxBipartiteMatching"
     410  Successive shortest path algorithm for calculate minimum cost maximum
     411  matching in bipartite graph
     412- \ref lemon::MaxMatching "MaxMatching" Edmond's blossom shrinking algorithm
     413  for calculate maximum cardinality matching in general graph
     414- \ref lemon::MaxWeightedMatching "MaxWeightedMatching" Edmond's blossom
     415  shrinking algorithm for calculate maximum weighted matching in general
     416  graph
     417- \ref lemon::MaxWeightedPerfectMatching "MaxWeightedPerfectMatching"
     418  Edmond's blossom shrinking algorithm for calculate maximum weighted
     419  perfect matching in general graph
    464420
    465421\image html bipartite_matching.png
     
    473429
    474430This group describes the algorithms for finding a minimum cost spanning
    475 tree in a graph.
     431tree in a graph
    476432*/
    477433
     
    664620\anchor demoprograms
    665621
    666 @defgroup demos Demo Programs
     622@defgroup demos Demo programs
    667623
    668624Some demo programs are listed here. Their full source codes can be found in
     
    674630
    675631/**
    676 @defgroup tools Standalone Utility Applications
     632@defgroup tools Standalone utility applications
    677633
    678634Some utility applications are listed here.
     
    682638*/
    683639
    684 }
Note: See TracChangeset for help on using the changeset viewer.