COIN-OR::LEMON - Graph Library

Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/groups.dox

    r1023 r318  
    33 * This file is a part of LEMON, a generic C++ optimization library.
    44 *
    5  * Copyright (C) 2003-2010
     5 * Copyright (C) 2003-2008
    66 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
    77 * (Egervary Research Group on Combinatorial Optimization, EGRES).
     
    1717 */
    1818
    19 namespace lemon {
    20 
    2119/**
    2220@defgroup datas Data Structures
    23 This group contains the several data structures implemented in LEMON.
     21This group describes the several data structures implemented in LEMON.
    2422*/
    2523
     
    6361
    6462/**
    65 @defgroup graph_adaptors Adaptor Classes for Graphs
     63@defgroup semi_adaptors Semi-Adaptor Classes for Graphs
    6664@ingroup graphs
    67 \brief Adaptor classes for digraphs and graphs
    68 
    69 This group contains several useful adaptor classes for digraphs and graphs.
    70 
    71 The main parts of LEMON are the different graph structures, generic
    72 graph algorithms, graph concepts, which couple them, and graph
    73 adaptors. While the previous notions are more or less clear, the
    74 latter one needs further explanation. Graph adaptors are graph classes
    75 which serve for considering graph structures in different ways.
    76 
    77 A short example makes this much clearer.  Suppose that we have an
    78 instance \c g of a directed graph type, say ListDigraph and an algorithm
    79 \code
    80 template <typename Digraph>
    81 int algorithm(const Digraph&);
    82 \endcode
    83 is needed to run on the reverse oriented graph.  It may be expensive
    84 (in time or in memory usage) to copy \c g with the reversed
    85 arcs.  In this case, an adaptor class is used, which (according
    86 to LEMON \ref concepts::Digraph "digraph concepts") works as a digraph.
    87 The adaptor uses the original digraph structure and digraph operations when
    88 methods of the reversed oriented graph are called.  This means that the adaptor
    89 have minor memory usage, and do not perform sophisticated algorithmic
    90 actions.  The purpose of it is to give a tool for the cases when a
    91 graph have to be used in a specific alteration.  If this alteration is
    92 obtained by a usual construction like filtering the node or the arc set or
    93 considering a new orientation, then an adaptor is worthwhile to use.
    94 To come back to the reverse oriented graph, in this situation
    95 \code
    96 template<typename Digraph> class ReverseDigraph;
    97 \endcode
    98 template class can be used. The code looks as follows
    99 \code
    100 ListDigraph g;
    101 ReverseDigraph<ListDigraph> rg(g);
    102 int result = algorithm(rg);
    103 \endcode
    104 During running the algorithm, the original digraph \c g is untouched.
    105 This techniques give rise to an elegant code, and based on stable
    106 graph adaptors, complex algorithms can be implemented easily.
    107 
    108 In flow, circulation and matching problems, the residual
    109 graph is of particular importance. Combining an adaptor implementing
    110 this with shortest path algorithms or minimum mean cycle algorithms,
    111 a range of weighted and cardinality optimization algorithms can be
    112 obtained. For other examples, the interested user is referred to the
    113 detailed documentation of particular adaptors.
    114 
    115 The behavior of graph adaptors can be very different. Some of them keep
    116 capabilities of the original graph while in other cases this would be
    117 meaningless. This means that the concepts that they meet depend
    118 on the graph adaptor, and the wrapped graph.
    119 For example, if an arc of a reversed digraph is deleted, this is carried
    120 out by deleting the corresponding arc of the original digraph, thus the
    121 adaptor modifies the original digraph.
    122 However in case of a residual digraph, this operation has no sense.
    123 
    124 Let us stand one more example here to simplify your work.
    125 ReverseDigraph has constructor
    126 \code
    127 ReverseDigraph(Digraph& digraph);
    128 \endcode
    129 This means that in a situation, when a <tt>const %ListDigraph&</tt>
    130 reference to a graph is given, then it have to be instantiated with
    131 <tt>Digraph=const %ListDigraph</tt>.
    132 \code
    133 int algorithm1(const ListDigraph& g) {
    134   ReverseDigraph<const ListDigraph> rg(g);
    135   return algorithm2(rg);
    136 }
    137 \endcode
     65\brief Graph types between real graphs and graph adaptors.
     66
     67This group describes some graph types between real graphs and graph adaptors.
     68These classes wrap graphs to give new functionality as the adaptors do it.
     69On the other hand they are not light-weight structures as the adaptors.
    13870*/
    13971
     
    14375\brief Map structures implemented in LEMON.
    14476
    145 This group contains the map structures implemented in LEMON.
     77This group describes the map structures implemented in LEMON.
    14678
    14779LEMON provides several special purpose maps and map adaptors that e.g. combine
     
    15688\brief Special graph-related maps.
    15789
    158 This group contains maps that are specifically designed to assign
    159 values to the nodes and arcs/edges of graphs.
    160 
    161 If you are looking for the standard graph maps (\c NodeMap, \c ArcMap,
    162 \c EdgeMap), see the \ref graph_concepts "Graph Structure Concepts".
     90This group describes maps that are specifically designed to assign
     91values to the nodes and arcs of graphs.
    16392*/
    16493
     
    16897\brief Tools to create new maps from existing ones
    16998
    170 This group contains map adaptors that are used to create "implicit"
     99This group describes map adaptors that are used to create "implicit"
    171100maps from other maps.
    172101
    173 Most of them are \ref concepts::ReadMap "read-only maps".
     102Most of them are \ref lemon::concepts::ReadMap "read-only maps".
    174103They can make arithmetic and logical operations between one or two maps
    175104(negation, shifting, addition, multiplication, logical 'and', 'or',
     
    227156
    228157/**
     158@defgroup matrices Matrices
     159@ingroup datas
     160\brief Two dimensional data storages implemented in LEMON.
     161
     162This group describes two dimensional data storages implemented in LEMON.
     163*/
     164
     165/**
    229166@defgroup paths Path Structures
    230167@ingroup datas
    231168\brief %Path structures implemented in LEMON.
    232169
    233 This group contains the path structures implemented in LEMON.
     170This group describes the path structures implemented in LEMON.
    234171
    235172LEMON provides flexible data structures to work with paths.
     
    239176any kind of path structure.
    240177
    241 \sa \ref concepts::Path "Path concept"
    242 */
    243 
    244 /**
    245 @defgroup heaps Heap Structures
    246 @ingroup datas
    247 \brief %Heap structures implemented in LEMON.
    248 
    249 This group contains the heap structures implemented in LEMON.
    250 
    251 LEMON provides several heap classes. They are efficient implementations
    252 of the abstract data type \e priority \e queue. They store items with
    253 specified values called \e priorities in such a way that finding and
    254 removing the item with minimum priority are efficient.
    255 The basic operations are adding and erasing items, changing the priority
    256 of an item, etc.
    257 
    258 Heaps are crucial in several algorithms, such as Dijkstra and Prim.
    259 The heap implementations have the same interface, thus any of them can be
    260 used easily in such algorithms.
    261 
    262 \sa \ref concepts::Heap "Heap concept"
     178\sa lemon::concepts::Path
    263179*/
    264180
     
    268184\brief Auxiliary data structures implemented in LEMON.
    269185
    270 This group contains some data structures implemented in LEMON in
     186This group describes some data structures implemented in LEMON in
    271187order to make it easier to implement combinatorial algorithms.
    272188*/
    273189
    274190/**
    275 @defgroup geomdat Geometric Data Structures
    276 @ingroup auxdat
    277 \brief Geometric data structures implemented in LEMON.
    278 
    279 This group contains geometric data structures implemented in LEMON.
    280 
    281  - \ref lemon::dim2::Point "dim2::Point" implements a two dimensional
    282    vector with the usual operations.
    283  - \ref lemon::dim2::Box "dim2::Box" can be used to determine the
    284    rectangular bounding box of a set of \ref lemon::dim2::Point
    285    "dim2::Point"'s.
    286 */
    287 
    288 /**
    289 @defgroup matrices Matrices
    290 @ingroup auxdat
    291 \brief Two dimensional data storages implemented in LEMON.
    292 
    293 This group contains two dimensional data storages implemented in LEMON.
    294 */
    295 
    296 /**
    297191@defgroup algs Algorithms
    298 \brief This group contains the several algorithms
     192\brief This group describes the several algorithms
    299193implemented in LEMON.
    300194
    301 This group contains the several algorithms
     195This group describes the several algorithms
    302196implemented in LEMON.
    303197*/
     
    308202\brief Common graph search algorithms.
    309203
    310 This group contains the common graph search algorithms, namely
    311 \e breadth-first \e search (BFS) and \e depth-first \e search (DFS)
    312 \ref clrs01algorithms.
     204This group describes the common graph search algorithms like
     205Breadth-First Search (BFS) and Depth-First Search (DFS).
    313206*/
    314207
     
    318211\brief Algorithms for finding shortest paths.
    319212
    320 This group contains the algorithms for finding shortest paths in digraphs
    321 \ref clrs01algorithms.
    322 
    323  - \ref Dijkstra algorithm for finding shortest paths from a source node
    324    when all arc lengths are non-negative.
    325  - \ref BellmanFord "Bellman-Ford" algorithm for finding shortest paths
    326    from a source node when arc lenghts can be either positive or negative,
    327    but the digraph should not contain directed cycles with negative total
    328    length.
    329  - \ref FloydWarshall "Floyd-Warshall" and \ref Johnson "Johnson" algorithms
    330    for solving the \e all-pairs \e shortest \e paths \e problem when arc
    331    lenghts can be either positive or negative, but the digraph should
    332    not contain directed cycles with negative total length.
    333  - \ref Suurballe A successive shortest path algorithm for finding
    334    arc-disjoint paths between two nodes having minimum total length.
    335 */
    336 
    337 /**
    338 @defgroup spantree Minimum Spanning Tree Algorithms
    339 @ingroup algs
    340 \brief Algorithms for finding minimum cost spanning trees and arborescences.
    341 
    342 This group contains the algorithms for finding minimum cost spanning
    343 trees and arborescences \ref clrs01algorithms.
     213This group describes the algorithms for finding shortest paths in graphs.
    344214*/
    345215
     
    349219\brief Algorithms for finding maximum flows.
    350220
    351 This group contains the algorithms for finding maximum flows and
    352 feasible circulations \ref clrs01algorithms, \ref amo93networkflows.
    353 
    354 The \e maximum \e flow \e problem is to find a flow of maximum value between
    355 a single source and a single target. Formally, there is a \f$G=(V,A)\f$
    356 digraph, a \f$cap: A\rightarrow\mathbf{R}^+_0\f$ capacity function and
    357 \f$s, t \in V\f$ source and target nodes.
    358 A maximum flow is an \f$f: A\rightarrow\mathbf{R}^+_0\f$ solution of the
    359 following optimization problem.
    360 
    361 \f[ \max\sum_{sv\in A} f(sv) - \sum_{vs\in A} f(vs) \f]
    362 \f[ \sum_{uv\in A} f(uv) = \sum_{vu\in A} f(vu)
    363     \quad \forall u\in V\setminus\{s,t\} \f]
    364 \f[ 0 \leq f(uv) \leq cap(uv) \quad \forall uv\in A \f]
     221This group describes the algorithms for finding maximum flows and
     222feasible circulations.
     223
     224The maximum flow problem is to find a flow between a single source and
     225a single target that is maximum. Formally, there is a \f$G=(V,A)\f$
     226directed graph, an \f$c_a:A\rightarrow\mathbf{R}^+_0\f$ capacity
     227function and given \f$s, t \in V\f$ source and target node. The
     228maximum flow is the \f$f_a\f$ solution of the next optimization problem:
     229
     230\f[ 0 \le f_a \le c_a \f]
     231\f[ \sum_{v\in\delta^{-}(u)}f_{vu}=\sum_{v\in\delta^{+}(u)}f_{uv}
     232\qquad \forall u \in V \setminus \{s,t\}\f]
     233\f[ \max \sum_{v\in\delta^{+}(s)}f_{uv} - \sum_{v\in\delta^{-}(s)}f_{vu}\f]
    365234
    366235LEMON contains several algorithms for solving maximum flow problems:
    367 - \ref EdmondsKarp Edmonds-Karp algorithm
    368   \ref edmondskarp72theoretical.
    369 - \ref Preflow Goldberg-Tarjan's preflow push-relabel algorithm
    370   \ref goldberg88newapproach.
    371 - \ref DinitzSleatorTarjan Dinitz's blocking flow algorithm with dynamic trees
    372   \ref dinic70algorithm, \ref sleator83dynamic.
    373 - \ref GoldbergTarjan !Preflow push-relabel algorithm with dynamic trees
    374   \ref goldberg88newapproach, \ref sleator83dynamic.
    375 
    376 In most cases the \ref Preflow algorithm provides the
    377 fastest method for computing a maximum flow. All implementations
    378 also provide functions to query the minimum cut, which is the dual
    379 problem of maximum flow.
    380 
    381 \ref Circulation is a preflow push-relabel algorithm implemented directly
    382 for finding feasible circulations, which is a somewhat different problem,
    383 but it is strongly related to maximum flow.
    384 For more information, see \ref Circulation.
    385 */
    386 
    387 /**
    388 @defgroup min_cost_flow_algs Minimum Cost Flow Algorithms
     236- \ref lemon::EdmondsKarp "Edmonds-Karp"
     237- \ref lemon::Preflow "Goldberg's Preflow algorithm"
     238- \ref lemon::DinitzSleatorTarjan "Dinitz's blocking flow algorithm with dynamic trees"
     239- \ref lemon::GoldbergTarjan "Preflow algorithm with dynamic trees"
     240
     241In most cases the \ref lemon::Preflow "Preflow" algorithm provides the
     242fastest method to compute the maximum flow. All impelementations
     243provides functions to query the minimum cut, which is the dual linear
     244programming problem of the maximum flow.
     245*/
     246
     247/**
     248@defgroup min_cost_flow Minimum Cost Flow Algorithms
    389249@ingroup algs
    390250
    391251\brief Algorithms for finding minimum cost flows and circulations.
    392252
    393 This group contains the algorithms for finding minimum cost flows and
    394 circulations \ref amo93networkflows. For more information about this
    395 problem and its dual solution, see \ref min_cost_flow
    396 "Minimum Cost Flow Problem".
    397 
    398 LEMON contains several algorithms for this problem.
    399  - \ref NetworkSimplex Primal Network Simplex algorithm with various
    400    pivot strategies \ref dantzig63linearprog, \ref kellyoneill91netsimplex.
    401  - \ref CostScaling Cost Scaling algorithm based on push/augment and
    402    relabel operations \ref goldberg90approximation, \ref goldberg97efficient,
    403    \ref bunnagel98efficient.
    404  - \ref CapacityScaling Capacity Scaling algorithm based on the successive
    405    shortest path method \ref edmondskarp72theoretical.
    406  - \ref CycleCanceling Cycle-Canceling algorithms, two of which are
    407    strongly polynomial \ref klein67primal, \ref goldberg89cyclecanceling.
    408 
    409 In general, \ref NetworkSimplex and \ref CostScaling are the most efficient
    410 implementations, but the other two algorithms could be faster in special cases.
    411 For example, if the total supply and/or capacities are rather small,
    412 \ref CapacityScaling is usually the fastest algorithm (without effective scaling).
     253This group describes the algorithms for finding minimum cost flows and
     254circulations.
    413255*/
    414256
     
    419261\brief Algorithms for finding minimum cut in graphs.
    420262
    421 This group contains the algorithms for finding minimum cut in graphs.
    422 
    423 The \e minimum \e cut \e problem is to find a non-empty and non-complete
    424 \f$X\f$ subset of the nodes with minimum overall capacity on
    425 outgoing arcs. Formally, there is a \f$G=(V,A)\f$ digraph, a
    426 \f$cap: A\rightarrow\mathbf{R}^+_0\f$ capacity function. The minimum
     263This group describes the algorithms for finding minimum cut in graphs.
     264
     265The minimum cut problem is to find a non-empty and non-complete
     266\f$X\f$ subset of the vertices with minimum overall capacity on
     267outgoing arcs. Formally, there is \f$G=(V,A)\f$ directed graph, an
     268\f$c_a:A\rightarrow\mathbf{R}^+_0\f$ capacity function. The minimum
    427269cut is the \f$X\f$ solution of the next optimization problem:
    428270
    429271\f[ \min_{X \subset V, X\not\in \{\emptyset, V\}}
    430     \sum_{uv\in A: u\in X, v\not\in X}cap(uv) \f]
     272\sum_{uv\in A, u\in X, v\not\in X}c_{uv}\f]
    431273
    432274LEMON contains several algorithms related to minimum cut problems:
    433275
    434 - \ref HaoOrlin "Hao-Orlin algorithm" for calculating minimum cut
    435   in directed graphs.
    436 - \ref NagamochiIbaraki "Nagamochi-Ibaraki algorithm" for
    437   calculating minimum cut in undirected graphs.
    438 - \ref GomoryHu "Gomory-Hu tree computation" for calculating
    439   all-pairs minimum cut in undirected graphs.
     276- \ref lemon::HaoOrlin "Hao-Orlin algorithm" to calculate minimum cut
     277  in directed graphs
     278- \ref lemon::NagamochiIbaraki "Nagamochi-Ibaraki algorithm" to
     279  calculate minimum cut in undirected graphs
     280- \ref lemon::GomoryHuTree "Gomory-Hu tree computation" to calculate all
     281  pairs minimum cut in undirected graphs
    440282
    441283If you want to find minimum cut just between two distinict nodes,
    442 see the \ref max_flow "maximum flow problem".
    443 */
    444 
    445 /**
    446 @defgroup min_mean_cycle Minimum Mean Cycle Algorithms
    447 @ingroup algs
    448 \brief Algorithms for finding minimum mean cycles.
    449 
    450 This group contains the algorithms for finding minimum mean cycles
    451 \ref clrs01algorithms, \ref amo93networkflows.
    452 
    453 The \e minimum \e mean \e cycle \e problem is to find a directed cycle
    454 of minimum mean length (cost) in a digraph.
    455 The mean length of a cycle is the average length of its arcs, i.e. the
    456 ratio between the total length of the cycle and the number of arcs on it.
    457 
    458 This problem has an important connection to \e conservative \e length
    459 \e functions, too. A length function on the arcs of a digraph is called
    460 conservative if and only if there is no directed cycle of negative total
    461 length. For an arbitrary length function, the negative of the minimum
    462 cycle mean is the smallest \f$\epsilon\f$ value so that increasing the
    463 arc lengths uniformly by \f$\epsilon\f$ results in a conservative length
    464 function.
    465 
    466 LEMON contains three algorithms for solving the minimum mean cycle problem:
    467 - \ref KarpMmc Karp's original algorithm \ref amo93networkflows,
    468   \ref dasdan98minmeancycle.
    469 - \ref HartmannOrlinMmc Hartmann-Orlin's algorithm, which is an improved
    470   version of Karp's algorithm \ref dasdan98minmeancycle.
    471 - \ref HowardMmc Howard's policy iteration algorithm
    472   \ref dasdan98minmeancycle.
    473 
    474 In practice, the \ref HowardMmc "Howard" algorithm turned out to be by far the
    475 most efficient one, though the best known theoretical bound on its running
    476 time is exponential.
    477 Both \ref KarpMmc "Karp" and \ref HartmannOrlinMmc "Hartmann-Orlin" algorithms
    478 run in time O(ne) and use space O(n<sup>2</sup>+e), but the latter one is
    479 typically faster due to the applied early termination scheme.
     284please see the \ref max_flow "Maximum Flow page".
     285*/
     286
     287/**
     288@defgroup graph_prop Connectivity and Other Graph Properties
     289@ingroup algs
     290\brief Algorithms for discovering the graph properties
     291
     292This group describes the algorithms for discovering the graph properties
     293like connectivity, bipartiteness, euler property, simplicity etc.
     294
     295\image html edge_biconnected_components.png
     296\image latex edge_biconnected_components.eps "bi-edge-connected components" width=\textwidth
     297*/
     298
     299/**
     300@defgroup planar Planarity Embedding and Drawing
     301@ingroup algs
     302\brief Algorithms for planarity checking, embedding and drawing
     303
     304This group describes the algorithms for planarity checking,
     305embedding and drawing.
     306
     307\image html planar.png
     308\image latex planar.eps "Plane graph" width=\textwidth
    480309*/
    481310
     
    485314\brief Algorithms for finding matchings in graphs and bipartite graphs.
    486315
    487 This group contains the algorithms for calculating
     316This group contains algorithm objects and functions to calculate
    488317matchings in graphs and bipartite graphs. The general matching problem is
    489 finding a subset of the edges for which each node has at most one incident
    490 edge.
     318finding a subset of the arcs which does not shares common endpoints.
    491319
    492320There are several different algorithms for calculate matchings in
    493321graphs.  The matching problems in bipartite graphs are generally
    494322easier than in general graphs. The goal of the matching optimization
    495 can be finding maximum cardinality, maximum weight or minimum cost
     323can be the finding maximum cardinality, maximum weight or minimum cost
    496324matching. The search can be constrained to find perfect or
    497325maximum cardinality matching.
    498326
    499 The matching algorithms implemented in LEMON:
    500 - \ref MaxBipartiteMatching Hopcroft-Karp augmenting path algorithm
    501   for calculating maximum cardinality matching in bipartite graphs.
    502 - \ref PrBipartiteMatching Push-relabel algorithm
    503   for calculating maximum cardinality matching in bipartite graphs.
    504 - \ref MaxWeightedBipartiteMatching
    505   Successive shortest path algorithm for calculating maximum weighted
    506   matching and maximum weighted bipartite matching in bipartite graphs.
    507 - \ref MinCostMaxBipartiteMatching
    508   Successive shortest path algorithm for calculating minimum cost maximum
    509   matching in bipartite graphs.
    510 - \ref MaxMatching Edmond's blossom shrinking algorithm for calculating
    511   maximum cardinality matching in general graphs.
    512 - \ref MaxWeightedMatching Edmond's blossom shrinking algorithm for calculating
    513   maximum weighted matching in general graphs.
    514 - \ref MaxWeightedPerfectMatching
    515   Edmond's blossom shrinking algorithm for calculating maximum weighted
    516   perfect matching in general graphs.
    517 - \ref MaxFractionalMatching Push-relabel algorithm for calculating
    518   maximum cardinality fractional matching in general graphs.
    519 - \ref MaxWeightedFractionalMatching Augmenting path algorithm for calculating
    520   maximum weighted fractional matching in general graphs.
    521 - \ref MaxWeightedPerfectFractionalMatching
    522   Augmenting path algorithm for calculating maximum weighted
    523   perfect fractional matching in general graphs.
    524 
    525 \image html matching.png
    526 \image latex matching.eps "Min Cost Perfect Matching" width=\textwidth
    527 */
    528 
    529 /**
    530 @defgroup graph_properties Connectivity and Other Graph Properties
    531 @ingroup algs
    532 \brief Algorithms for discovering the graph properties
    533 
    534 This group contains the algorithms for discovering the graph properties
    535 like connectivity, bipartiteness, euler property, simplicity etc.
    536 
    537 \image html connected_components.png
    538 \image latex connected_components.eps "Connected components" width=\textwidth
    539 */
    540 
    541 /**
    542 @defgroup planar Planar Embedding and Drawing
    543 @ingroup algs
    544 \brief Algorithms for planarity checking, embedding and drawing
    545 
    546 This group contains the algorithms for planarity checking,
    547 embedding and drawing.
    548 
    549 \image html planar.png
    550 \image latex planar.eps "Plane graph" width=\textwidth
    551 */
    552 
    553 /**
    554 @defgroup approx_algs Approximation Algorithms
     327LEMON contains the next algorithms:
     328- \ref lemon::MaxBipartiteMatching "MaxBipartiteMatching" Hopcroft-Karp
     329  augmenting path algorithm for calculate maximum cardinality matching in
     330  bipartite graphs
     331- \ref lemon::PrBipartiteMatching "PrBipartiteMatching" Push-Relabel
     332  algorithm for calculate maximum cardinality matching in bipartite graphs
     333- \ref lemon::MaxWeightedBipartiteMatching "MaxWeightedBipartiteMatching"
     334  Successive shortest path algorithm for calculate maximum weighted matching
     335  and maximum weighted bipartite matching in bipartite graph
     336- \ref lemon::MinCostMaxBipartiteMatching "MinCostMaxBipartiteMatching"
     337  Successive shortest path algorithm for calculate minimum cost maximum
     338  matching in bipartite graph
     339- \ref lemon::MaxMatching "MaxMatching" Edmond's blossom shrinking algorithm
     340  for calculate maximum cardinality matching in general graph
     341- \ref lemon::MaxWeightedMatching "MaxWeightedMatching" Edmond's blossom
     342  shrinking algorithm for calculate maximum weighted matching in general
     343  graph
     344- \ref lemon::MaxWeightedPerfectMatching "MaxWeightedPerfectMatching"
     345  Edmond's blossom shrinking algorithm for calculate maximum weighted
     346  perfect matching in general graph
     347
     348\image html bipartite_matching.png
     349\image latex bipartite_matching.eps "Bipartite Matching" width=\textwidth
     350*/
     351
     352/**
     353@defgroup spantree Minimum Spanning Tree Algorithms
     354@ingroup algs
     355\brief Algorithms for finding a minimum cost spanning tree in a graph.
     356
     357This group describes the algorithms for finding a minimum cost spanning
     358tree in a graph
     359*/
     360
     361/**
     362@defgroup auxalg Auxiliary Algorithms
     363@ingroup algs
     364\brief Auxiliary algorithms implemented in LEMON.
     365
     366This group describes some algorithms implemented in LEMON
     367in order to make it easier to implement complex algorithms.
     368*/
     369
     370/**
     371@defgroup approx Approximation Algorithms
    555372@ingroup algs
    556373\brief Approximation algorithms.
    557374
    558 This group contains the approximation and heuristic algorithms
     375This group describes the approximation and heuristic algorithms
    559376implemented in LEMON.
    560 
    561 <b>Maximum Clique Problem</b>
    562   - \ref GrossoLocatelliPullanMc An efficient heuristic algorithm of
    563     Grosso, Locatelli, and Pullan.
    564 */
    565 
    566 /**
    567 @defgroup auxalg Auxiliary Algorithms
    568 @ingroup algs
    569 \brief Auxiliary algorithms implemented in LEMON.
    570 
    571 This group contains some algorithms implemented in LEMON
    572 in order to make it easier to implement complex algorithms.
    573377*/
    574378
    575379/**
    576380@defgroup gen_opt_group General Optimization Tools
    577 \brief This group contains some general optimization frameworks
     381\brief This group describes some general optimization frameworks
    578382implemented in LEMON.
    579383
    580 This group contains some general optimization frameworks
     384This group describes some general optimization frameworks
    581385implemented in LEMON.
    582386*/
    583387
    584388/**
    585 @defgroup lp_group LP and MIP Solvers
     389@defgroup lp_group Lp and Mip Solvers
    586390@ingroup gen_opt_group
    587 \brief LP and MIP solver interfaces for LEMON.
    588 
    589 This group contains LP and MIP solver interfaces for LEMON.
    590 Various LP solvers could be used in the same manner with this
    591 high-level interface.
    592 
    593 The currently supported solvers are \ref glpk, \ref clp, \ref cbc,
    594 \ref cplex, \ref soplex.
     391\brief Lp and Mip solver interfaces for LEMON.
     392
     393This group describes Lp and Mip solver interfaces for LEMON. The
     394various LP solvers could be used in the same manner with this
     395interface.
    595396*/
    596397
     
    609410\brief Metaheuristics for LEMON library.
    610411
    611 This group contains some metaheuristic optimization tools.
     412This group describes some metaheuristic optimization tools.
    612413*/
    613414
     
    624425\brief Simple basic graph utilities.
    625426
    626 This group contains some simple basic graph utilities.
     427This group describes some simple basic graph utilities.
    627428*/
    628429
     
    632433\brief Tools for development, debugging and testing.
    633434
    634 This group contains several useful tools for development,
     435This group describes several useful tools for development,
    635436debugging and testing.
    636437*/
     
    641442\brief Simple tools for measuring the performance of algorithms.
    642443
    643 This group contains simple tools for measuring the performance
     444This group describes simple tools for measuring the performance
    644445of algorithms.
    645446*/
     
    650451\brief Exceptions defined in LEMON.
    651452
    652 This group contains the exceptions defined in LEMON.
     453This group describes the exceptions defined in LEMON.
    653454*/
    654455
     
    657458\brief Graph Input-Output methods
    658459
    659 This group contains the tools for importing and exporting graphs
     460This group describes the tools for importing and exporting graphs
    660461and graph related data. Now it supports the \ref lgf-format
    661462"LEMON Graph Format", the \c DIMACS format and the encapsulated
     
    664465
    665466/**
    666 @defgroup lemon_io LEMON Graph Format
     467@defgroup lemon_io LEMON Input-Output
    667468@ingroup io_group
    668469\brief Reading and writing LEMON Graph Format.
    669470
    670 This group contains methods for reading and writing
     471This group describes methods for reading and writing
    671472\ref lgf-format "LEMON Graph Format".
    672473*/
     
    677478\brief General \c EPS drawer and graph exporter
    678479
    679 This group contains general \c EPS drawing methods and special
     480This group describes general \c EPS drawing methods and special
    680481graph exporting tools.
    681 */
    682 
    683 /**
    684 @defgroup dimacs_group DIMACS Format
    685 @ingroup io_group
    686 \brief Read and write files in DIMACS format
    687 
    688 Tools to read a digraph from or write it to a file in DIMACS format data.
    689 */
    690 
    691 /**
    692 @defgroup nauty_group NAUTY Format
    693 @ingroup io_group
    694 \brief Read \e Nauty format
    695 
    696 Tool to read graphs from \e Nauty format data.
    697482*/
    698483
     
    701486\brief Skeleton classes and concept checking classes
    702487
    703 This group contains the data/algorithm skeletons and concept checking
     488This group describes the data/algorithm skeletons and concept checking
    704489classes implemented in LEMON.
    705490
     
    731516\brief Skeleton and concept checking classes for graph structures
    732517
    733 This group contains the skeletons and concept checking classes of
    734 graph structures.
     518This group describes the skeletons and concept checking classes of LEMON's
     519graph structures and helper classes used to implement these.
    735520*/
    736521
     
    740525\brief Skeleton and concept checking classes for maps
    741526
    742 This group contains the skeletons and concept checking classes of maps.
    743 */
    744 
    745 /**
    746 @defgroup tools Standalone Utility Applications
     527This group describes the skeletons and concept checking classes of maps.
     528*/
     529
     530/**
     531\anchor demoprograms
     532
     533@defgroup demos Demo programs
     534
     535Some demo programs are listed here. Their full source codes can be found in
     536the \c demo subdirectory of the source tree.
     537
     538It order to compile them, use <tt>--enable-demo</tt> configure option when
     539build the library.
     540*/
     541
     542/**
     543@defgroup tools Standalone utility applications
    747544
    748545Some utility applications are listed here.
     
    752549*/
    753550
    754 /**
    755 \anchor demoprograms
    756 
    757 @defgroup demos Demo Programs
    758 
    759 Some demo programs are listed here. Their full source codes can be found in
    760 the \c demo subdirectory of the source tree.
    761 
    762 In order to compile them, use the <tt>make demo</tt> or the
    763 <tt>make check</tt> commands.
    764 */
    765 
    766 }
Note: See TracChangeset for help on using the changeset viewer.