COIN-OR::LEMON - Graph Library

Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/groups.dox

    r879 r1366  
    33 * This file is a part of LEMON, a generic C++ optimization library.
    44 *
    5  * Copyright (C) 2003-2009
     5 * Copyright (C) 2003-2013
    66 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
    77 * (Egervary Research Group on Combinatorial Optimization, EGRES).
     
    113113detailed documentation of particular adaptors.
    114114
     115Since the adaptor classes conform to the \ref graph_concepts "graph concepts",
     116an adaptor can even be applied to another one.
     117The following image illustrates a situation when a \ref SubDigraph adaptor
     118is applied on a digraph and \ref Undirector is applied on the subgraph.
     119
     120\image html adaptors2.png
     121\image latex adaptors2.eps "Using graph adaptors" width=\textwidth
     122
    115123The behavior of graph adaptors can be very different. Some of them keep
    116124capabilities of the original graph while in other cases this would be
     
    264272
    265273/**
    266 @defgroup matrices Matrices
    267 @ingroup datas
    268 \brief Two dimensional data storages implemented in LEMON.
    269 
    270 This group contains two dimensional data storages implemented in LEMON.
    271 */
    272 
    273 /**
    274274@defgroup auxdat Auxiliary Data Structures
    275275@ingroup datas
     
    318318This group contains the common graph search algorithms, namely
    319319\e breadth-first \e search (BFS) and \e depth-first \e search (DFS)
    320 \ref clrs01algorithms.
     320\cite clrs01algorithms.
    321321*/
    322322
     
    327327
    328328This group contains the algorithms for finding shortest paths in digraphs
    329 \ref clrs01algorithms.
     329\cite clrs01algorithms.
    330330
    331331 - \ref Dijkstra algorithm for finding shortest paths from a source node
     
    349349
    350350This group contains the algorithms for finding minimum cost spanning
    351 trees and arborescences \ref clrs01algorithms.
     351trees and arborescences \cite clrs01algorithms.
    352352*/
    353353
     
    358358
    359359This group contains the algorithms for finding maximum flows and
    360 feasible circulations \ref clrs01algorithms, \ref amo93networkflows.
     360feasible circulations \cite clrs01algorithms, \cite amo93networkflows.
    361361
    362362The \e maximum \e flow \e problem is to find a flow of maximum value between
     
    374374LEMON contains several algorithms for solving maximum flow problems:
    375375- \ref EdmondsKarp Edmonds-Karp algorithm
    376   \ref edmondskarp72theoretical.
     376  \cite edmondskarp72theoretical.
    377377- \ref Preflow Goldberg-Tarjan's preflow push-relabel algorithm
    378   \ref goldberg88newapproach.
     378  \cite goldberg88newapproach.
    379379- \ref DinitzSleatorTarjan Dinitz's blocking flow algorithm with dynamic trees
    380   \ref dinic70algorithm, \ref sleator83dynamic.
     380  \cite dinic70algorithm, \cite sleator83dynamic.
    381381- \ref GoldbergTarjan !Preflow push-relabel algorithm with dynamic trees
    382   \ref goldberg88newapproach, \ref sleator83dynamic.
     382  \cite goldberg88newapproach, \cite sleator83dynamic.
    383383
    384384In most cases the \ref Preflow algorithm provides the
     
    387387problem of maximum flow.
    388388
    389 \ref Circulation is a preflow push-relabel algorithm implemented directly 
     389\ref Circulation is a preflow push-relabel algorithm implemented directly
    390390for finding feasible circulations, which is a somewhat different problem,
    391391but it is strongly related to maximum flow.
     
    400400
    401401This group contains the algorithms for finding minimum cost flows and
    402 circulations \ref amo93networkflows. For more information about this
    403 problem and its dual solution, see \ref min_cost_flow
     402circulations \cite amo93networkflows. For more information about this
     403problem and its dual solution, see: \ref min_cost_flow
    404404"Minimum Cost Flow Problem".
    405405
    406406LEMON contains several algorithms for this problem.
    407407 - \ref NetworkSimplex Primal Network Simplex algorithm with various
    408    pivot strategies \ref dantzig63linearprog, \ref kellyoneill91netsimplex.
     408   pivot strategies \cite dantzig63linearprog, \cite kellyoneill91netsimplex.
    409409 - \ref CostScaling Cost Scaling algorithm based on push/augment and
    410    relabel operations \ref goldberg90approximation, \ref goldberg97efficient,
    411    \ref bunnagel98efficient.
     410   relabel operations \cite goldberg90approximation, \cite goldberg97efficient,
     411   \cite bunnagel98efficient.
    412412 - \ref CapacityScaling Capacity Scaling algorithm based on the successive
    413    shortest path method \ref edmondskarp72theoretical.
     413   shortest path method \cite edmondskarp72theoretical.
    414414 - \ref CycleCanceling Cycle-Canceling algorithms, two of which are
    415    strongly polynomial \ref klein67primal, \ref goldberg89cyclecanceling.
    416 
    417 In general NetworkSimplex is the most efficient implementation,
    418 but in special cases other algorithms could be faster.
     415   strongly polynomial \cite klein67primal, \cite goldberg89cyclecanceling.
     416
     417In general, \ref NetworkSimplex and \ref CostScaling are the most efficient
     418implementations.
     419\ref NetworkSimplex is usually the fastest on relatively small graphs (up to
     420several thousands of nodes) and on dense graphs, while \ref CostScaling is
     421typically more efficient on large graphs (e.g. hundreds of thousands of
     422nodes or above), especially if they are sparse.
     423However, other algorithms could be faster in special cases.
    419424For example, if the total supply and/or capacities are rather small,
    420 CapacityScaling is usually the fastest algorithm (without effective scaling).
     425\ref CapacityScaling is usually the fastest algorithm
     426(without effective scaling).
     427
     428These classes are intended to be used with integer-valued input data
     429(capacities, supply values, and costs), except for \ref CapacityScaling,
     430which is capable of handling real-valued arc costs (other numerical
     431data are required to be integer).
     432
     433For more details about these implementations and for a comprehensive
     434experimental study, see the paper \cite KiralyKovacs12MCF.
     435It also compares these codes to other publicly available
     436minimum cost flow solvers.
    421437*/
    422438
     
    457473
    458474This group contains the algorithms for finding minimum mean cycles
    459 \ref clrs01algorithms, \ref amo93networkflows.
     475\cite amo93networkflows, \cite karp78characterization.
    460476
    461477The \e minimum \e mean \e cycle \e problem is to find a directed cycle
     
    473489
    474490LEMON contains three algorithms for solving the minimum mean cycle problem:
    475 - \ref Karp "Karp"'s original algorithm \ref amo93networkflows,
    476   \ref dasdan98minmeancycle.
    477 - \ref HartmannOrlin "Hartmann-Orlin"'s algorithm, which is an improved
    478   version of Karp's algorithm \ref dasdan98minmeancycle.
    479 - \ref Howard "Howard"'s policy iteration algorithm
    480   \ref dasdan98minmeancycle.
    481 
    482 In practice, the Howard algorithm proved to be by far the most efficient
    483 one, though the best known theoretical bound on its running time is
    484 exponential.
    485 Both Karp and HartmannOrlin algorithms run in time O(ne) and use space
    486 O(n<sup>2</sup>+e), but the latter one is typically faster due to the
    487 applied early termination scheme.
     491- \ref KarpMmc Karp's original algorithm \cite karp78characterization.
     492- \ref HartmannOrlinMmc Hartmann-Orlin's algorithm, which is an improved
     493  version of Karp's algorithm \cite hartmann93finding.
     494- \ref HowardMmc Howard's policy iteration algorithm
     495  \cite dasdan98minmeancycle, \cite dasdan04experimental.
     496
     497In practice, the \ref HowardMmc "Howard" algorithm turned out to be by far the
     498most efficient one, though the best known theoretical bound on its running
     499time is exponential.
     500Both \ref KarpMmc "Karp" and \ref HartmannOrlinMmc "Hartmann-Orlin" algorithms
     501run in time O(nm) and use space O(n<sup>2</sup>+m).
    488502*/
    489503
     
    523537  Edmond's blossom shrinking algorithm for calculating maximum weighted
    524538  perfect matching in general graphs.
    525 
    526 \image html bipartite_matching.png
    527 \image latex bipartite_matching.eps "Bipartite Matching" width=\textwidth
     539- \ref MaxFractionalMatching Push-relabel algorithm for calculating
     540  maximum cardinality fractional matching in general graphs.
     541- \ref MaxWeightedFractionalMatching Augmenting path algorithm for calculating
     542  maximum weighted fractional matching in general graphs.
     543- \ref MaxWeightedPerfectFractionalMatching
     544  Augmenting path algorithm for calculating maximum weighted
     545  perfect fractional matching in general graphs.
     546
     547\image html matching.png
     548\image latex matching.eps "Min Cost Perfect Matching" width=\textwidth
    528549*/
    529550
     
    541562
    542563/**
    543 @defgroup planar Planarity Embedding and Drawing
     564@defgroup graph_isomorphism Graph Isomorphism
     565@ingroup algs
     566\brief Algorithms for testing (sub)graph isomorphism
     567
     568This group contains algorithms for finding isomorph copies of a
     569given graph in another one, or simply check whether two graphs are isomorphic.
     570
     571The formal definition of subgraph isomorphism is as follows.
     572
     573We are given two graphs, \f$G_1=(V_1,E_1)\f$ and \f$G_2=(V_2,E_2)\f$. A
     574function \f$f:V_1\longrightarrow V_2\f$ is called \e mapping or \e
     575embedding if \f$f(u)\neq f(v)\f$ whenever \f$u\neq v\f$.
     576
     577The standard <em>Subgraph Isomorphism Problem (SIP)</em> looks for a
     578mapping with the property that whenever \f$(u,v)\in E_1\f$, then
     579\f$(f(u),f(v))\in E_2\f$.
     580
     581In case of <em>Induced Subgraph Isomorphism Problem (ISIP)</em> one
     582also requires that if \f$(u,v)\not\in E_1\f$, then \f$(f(u),f(v))\not\in
     583E_2\f$
     584
     585In addition, the graph nodes may be \e labeled, i.e. we are given two
     586node labelings \f$l_1:V_1\longrightarrow L\f$ and \f$l_2:V_2\longrightarrow
     587L\f$ and we require that \f$l_1(u)=l_2(f(u))\f$ holds for all nodes \f$u \in
     588G_1\f$.
     589
     590*/
     591
     592/**
     593@defgroup planar Planar Embedding and Drawing
    544594@ingroup algs
    545595\brief Algorithms for planarity checking, embedding and drawing
     
    553603
    554604/**
    555 @defgroup approx Approximation Algorithms
     605@defgroup tsp Traveling Salesman Problem
     606@ingroup algs
     607\brief Algorithms for the symmetric traveling salesman problem
     608
     609This group contains basic heuristic algorithms for the the symmetric
     610\e traveling \e salesman \e problem (TSP).
     611Given an \ref FullGraph "undirected full graph" with a cost map on its edges,
     612the problem is to find a shortest possible tour that visits each node exactly
     613once (i.e. the minimum cost Hamiltonian cycle).
     614
     615These TSP algorithms are intended to be used with a \e metric \e cost
     616\e function, i.e. the edge costs should satisfy the triangle inequality.
     617Otherwise the algorithms could yield worse results.
     618
     619LEMON provides five well-known heuristics for solving symmetric TSP:
     620 - \ref NearestNeighborTsp Neareast neighbor algorithm
     621 - \ref GreedyTsp Greedy algorithm
     622 - \ref InsertionTsp Insertion heuristic (with four selection methods)
     623 - \ref ChristofidesTsp Christofides algorithm
     624 - \ref Opt2Tsp 2-opt algorithm
     625
     626\ref NearestNeighborTsp, \ref GreedyTsp, and \ref InsertionTsp are the fastest
     627solution methods. Furthermore, \ref InsertionTsp is usually quite effective.
     628
     629\ref ChristofidesTsp is somewhat slower, but it has the best guaranteed
     630approximation factor: 3/2.
     631
     632\ref Opt2Tsp usually provides the best results in practice, but
     633it is the slowest method. It can also be used to improve given tours,
     634for example, the results of other algorithms.
     635
     636\image html tsp.png
     637\image latex tsp.eps "Traveling salesman problem" width=\textwidth
     638*/
     639
     640/**
     641@defgroup approx_algs Approximation Algorithms
    556642@ingroup algs
    557643\brief Approximation algorithms.
     
    559645This group contains the approximation and heuristic algorithms
    560646implemented in LEMON.
     647
     648<b>Maximum Clique Problem</b>
     649  - \ref GrossoLocatelliPullanMc An efficient heuristic algorithm of
     650    Grosso, Locatelli, and Pullan.
    561651*/
    562652
     
    588678high-level interface.
    589679
    590 The currently supported solvers are \ref glpk, \ref clp, \ref cbc,
    591 \ref cplex, \ref soplex.
     680The currently supported solvers are \cite glpk, \cite clp, \cite cbc,
     681\cite cplex, \cite soplex.
    592682*/
    593683
     
    676766This group contains general \c EPS drawing methods and special
    677767graph exporting tools.
     768
     769\image html graph_to_eps.png
    678770*/
    679771
Note: See TracChangeset for help on using the changeset viewer.