COIN-OR::LEMON - Graph Library

Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/groups.dox

    r1023 r710  
    33 * This file is a part of LEMON, a generic C++ optimization library.
    44 *
    5  * Copyright (C) 2003-2010
     5 * Copyright (C) 2003-2009
    66 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
    77 * (Egervary Research Group on Combinatorial Optimization, EGRES).
     
    227227
    228228/**
     229@defgroup matrices Matrices
     230@ingroup datas
     231\brief Two dimensional data storages implemented in LEMON.
     232
     233This group contains two dimensional data storages implemented in LEMON.
     234*/
     235
     236/**
    229237@defgroup paths Path Structures
    230238@ingroup datas
     
    239247any kind of path structure.
    240248
    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"
     249\sa lemon::concepts::Path
    263250*/
    264251
     
    273260
    274261/**
    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 /**
    297262@defgroup algs Algorithms
    298263\brief This group contains the several algorithms
     
    309274
    310275This 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.
     276\e breadth-first \e search (BFS) and \e depth-first \e search (DFS).
    313277*/
    314278
     
    318282\brief Algorithms for finding shortest paths.
    319283
    320 This group contains the algorithms for finding shortest paths in digraphs
    321 \ref clrs01algorithms.
     284This group contains the algorithms for finding shortest paths in digraphs.
    322285
    323286 - \ref Dijkstra algorithm for finding shortest paths from a source node
     
    336299
    337300/**
    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.
    344 */
    345 
    346 /**
    347301@defgroup max_flow Maximum Flow Algorithms
    348302@ingroup algs
     
    350304
    351305This group contains the algorithms for finding maximum flows and
    352 feasible circulations \ref clrs01algorithms, \ref amo93networkflows.
     306feasible circulations.
    353307
    354308The \e maximum \e flow \e problem is to find a flow of maximum value between
     
    365319
    366320LEMON 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
     321- \ref EdmondsKarp Edmonds-Karp algorithm.
     322- \ref Preflow Goldberg-Tarjan's preflow push-relabel algorithm.
     323- \ref DinitzSleatorTarjan Dinitz's blocking flow algorithm with dynamic trees.
     324- \ref GoldbergTarjan Preflow push-relabel algorithm with dynamic trees.
     325
     326In most cases the \ref Preflow "Preflow" algorithm provides the
    377327fastest method for computing a maximum flow. All implementations
    378328also provide functions to query the minimum cut, which is the dual
    379329problem of maximum flow.
    380330
    381 \ref Circulation is a preflow push-relabel algorithm implemented directly
     331\ref Circulation is a preflow push-relabel algorithm implemented directly 
    382332for finding feasible circulations, which is a somewhat different problem,
    383333but it is strongly related to maximum flow.
     
    392342
    393343This 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".
     344circulations. For more information about this problem and its dual
     345solution see \ref min_cost_flow "Minimum Cost Flow Problem".
    397346
    398347LEMON contains several algorithms for this problem.
    399348 - \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.
     349   pivot strategies.
     350 - \ref CostScaling Push-Relabel and Augment-Relabel algorithms based on
     351   cost scaling.
     352 - \ref CapacityScaling Successive Shortest %Path algorithm with optional
     353   capacity scaling.
     354 - \ref CancelAndTighten The Cancel and Tighten algorithm.
     355 - \ref CycleCanceling Cycle-Canceling algorithms.
     356
     357In general NetworkSimplex is the most efficient implementation,
     358but in special cases other algorithms could be faster.
    411359For example, if the total supply and/or capacities are rather small,
    412 \ref CapacityScaling is usually the fastest algorithm (without effective scaling).
     360CapacityScaling is usually the fastest algorithm (without effective scaling).
    413361*/
    414362
     
    428376
    429377\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]
     378    \sum_{uv\in A, u\in X, v\not\in X}cap(uv) \f]
    431379
    432380LEMON contains several algorithms related to minimum cut problems:
     
    444392
    445393/**
    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.
     394@defgroup graph_properties Connectivity and Other Graph Properties
     395@ingroup algs
     396\brief Algorithms for discovering the graph properties
     397
     398This group contains the algorithms for discovering the graph properties
     399like connectivity, bipartiteness, euler property, simplicity etc.
     400
     401\image html edge_biconnected_components.png
     402\image latex edge_biconnected_components.eps "bi-edge-connected components" width=\textwidth
     403*/
     404
     405/**
     406@defgroup planar Planarity Embedding and Drawing
     407@ingroup algs
     408\brief Algorithms for planarity checking, embedding and drawing
     409
     410This group contains the algorithms for planarity checking,
     411embedding and drawing.
     412
     413\image html planar.png
     414\image latex planar.eps "Plane graph" width=\textwidth
    480415*/
    481416
     
    515450  Edmond's blossom shrinking algorithm for calculating maximum weighted
    516451  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
     452
     453\image html bipartite_matching.png
     454\image latex bipartite_matching.eps "Bipartite Matching" width=\textwidth
     455*/
     456
     457/**
     458@defgroup spantree Minimum Spanning Tree Algorithms
     459@ingroup algs
     460\brief Algorithms for finding minimum cost spanning trees and arborescences.
     461
     462This group contains the algorithms for finding minimum cost spanning
     463trees and arborescences.
     464*/
     465
     466/**
     467@defgroup auxalg Auxiliary Algorithms
     468@ingroup algs
     469\brief Auxiliary algorithms implemented in LEMON.
     470
     471This group contains some algorithms implemented in LEMON
     472in order to make it easier to implement complex algorithms.
     473*/
     474
     475/**
     476@defgroup approx Approximation Algorithms
    555477@ingroup algs
    556478\brief Approximation algorithms.
     
    558480This group contains the approximation and heuristic algorithms
    559481implemented 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.
    573482*/
    574483
     
    583492
    584493/**
    585 @defgroup lp_group LP and MIP Solvers
     494@defgroup lp_group Lp and Mip Solvers
    586495@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.
     496\brief Lp and Mip solver interfaces for LEMON.
     497
     498This group contains Lp and Mip solver interfaces for LEMON. The
     499various LP solvers could be used in the same manner with this
     500interface.
    595501*/
    596502
     
    682588
    683589/**
    684 @defgroup dimacs_group DIMACS Format
     590@defgroup dimacs_group DIMACS format
    685591@ingroup io_group
    686592\brief Read and write files in DIMACS format
     
    731637\brief Skeleton and concept checking classes for graph structures
    732638
    733 This group contains the skeletons and concept checking classes of
    734 graph structures.
     639This group contains the skeletons and concept checking classes of LEMON's
     640graph structures and helper classes used to implement these.
    735641*/
    736642
     
    744650
    745651/**
     652\anchor demoprograms
     653
     654@defgroup demos Demo Programs
     655
     656Some demo programs are listed here. Their full source codes can be found in
     657the \c demo subdirectory of the source tree.
     658
     659In order to compile them, use the <tt>make demo</tt> or the
     660<tt>make check</tt> commands.
     661*/
     662
     663/**
    746664@defgroup tools Standalone Utility Applications
    747665
     
    752670*/
    753671
    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 
    766672}
Note: See TracChangeset for help on using the changeset viewer.