doc/groups.dox
changeset 1005 f37f0845cf32
parent 455 5a1e9fdcfd3a
child 564 eda12d8ac953
equal deleted inserted replaced
19:f9bac1a9f9c1 20:ab29b083a60e
    18 
    18 
    19 namespace lemon {
    19 namespace lemon {
    20 
    20 
    21 /**
    21 /**
    22 @defgroup datas Data Structures
    22 @defgroup datas Data Structures
    23 This group describes the several data structures implemented in LEMON.
    23 This group contains the several data structures implemented in LEMON.
    24 */
    24 */
    25 
    25 
    26 /**
    26 /**
    27 @defgroup graphs Graph Structures
    27 @defgroup graphs Graph Structures
    28 @ingroup datas
    28 @ingroup datas
   140 /**
   140 /**
   141 @defgroup semi_adaptors Semi-Adaptor Classes for Graphs
   141 @defgroup semi_adaptors Semi-Adaptor Classes for Graphs
   142 @ingroup graphs
   142 @ingroup graphs
   143 \brief Graph types between real graphs and graph adaptors.
   143 \brief Graph types between real graphs and graph adaptors.
   144 
   144 
   145 This group describes some graph types between real graphs and graph adaptors.
   145 This group contains some graph types between real graphs and graph adaptors.
   146 These classes wrap graphs to give new functionality as the adaptors do it.
   146 These classes wrap graphs to give new functionality as the adaptors do it.
   147 On the other hand they are not light-weight structures as the adaptors.
   147 On the other hand they are not light-weight structures as the adaptors.
   148 */
   148 */
   149 
   149 
   150 /**
   150 /**
   151 @defgroup maps Maps
   151 @defgroup maps Maps
   152 @ingroup datas
   152 @ingroup datas
   153 \brief Map structures implemented in LEMON.
   153 \brief Map structures implemented in LEMON.
   154 
   154 
   155 This group describes the map structures implemented in LEMON.
   155 This group contains the map structures implemented in LEMON.
   156 
   156 
   157 LEMON provides several special purpose maps and map adaptors that e.g. combine
   157 LEMON provides several special purpose maps and map adaptors that e.g. combine
   158 new maps from existing ones.
   158 new maps from existing ones.
   159 
   159 
   160 <b>See also:</b> \ref map_concepts "Map Concepts".
   160 <b>See also:</b> \ref map_concepts "Map Concepts".
   163 /**
   163 /**
   164 @defgroup graph_maps Graph Maps
   164 @defgroup graph_maps Graph Maps
   165 @ingroup maps
   165 @ingroup maps
   166 \brief Special graph-related maps.
   166 \brief Special graph-related maps.
   167 
   167 
   168 This group describes maps that are specifically designed to assign
   168 This group contains maps that are specifically designed to assign
   169 values to the nodes and arcs/edges of graphs.
   169 values to the nodes and arcs/edges of graphs.
   170 
   170 
   171 If you are looking for the standard graph maps (\c NodeMap, \c ArcMap,
   171 If you are looking for the standard graph maps (\c NodeMap, \c ArcMap,
   172 \c EdgeMap), see the \ref graph_concepts "Graph Structure Concepts".
   172 \c EdgeMap), see the \ref graph_concepts "Graph Structure Concepts".
   173 */
   173 */
   175 /**
   175 /**
   176 \defgroup map_adaptors Map Adaptors
   176 \defgroup map_adaptors Map Adaptors
   177 \ingroup maps
   177 \ingroup maps
   178 \brief Tools to create new maps from existing ones
   178 \brief Tools to create new maps from existing ones
   179 
   179 
   180 This group describes map adaptors that are used to create "implicit"
   180 This group contains map adaptors that are used to create "implicit"
   181 maps from other maps.
   181 maps from other maps.
   182 
   182 
   183 Most of them are \ref concepts::ReadMap "read-only maps".
   183 Most of them are \ref concepts::ReadMap "read-only maps".
   184 They can make arithmetic and logical operations between one or two maps
   184 They can make arithmetic and logical operations between one or two maps
   185 (negation, shifting, addition, multiplication, logical 'and', 'or',
   185 (negation, shifting, addition, multiplication, logical 'and', 'or',
   238 /**
   238 /**
   239 @defgroup matrices Matrices
   239 @defgroup matrices Matrices
   240 @ingroup datas
   240 @ingroup datas
   241 \brief Two dimensional data storages implemented in LEMON.
   241 \brief Two dimensional data storages implemented in LEMON.
   242 
   242 
   243 This group describes two dimensional data storages implemented in LEMON.
   243 This group contains two dimensional data storages implemented in LEMON.
   244 */
   244 */
   245 
   245 
   246 /**
   246 /**
   247 @defgroup paths Path Structures
   247 @defgroup paths Path Structures
   248 @ingroup datas
   248 @ingroup datas
   249 \brief %Path structures implemented in LEMON.
   249 \brief %Path structures implemented in LEMON.
   250 
   250 
   251 This group describes the path structures implemented in LEMON.
   251 This group contains the path structures implemented in LEMON.
   252 
   252 
   253 LEMON provides flexible data structures to work with paths.
   253 LEMON provides flexible data structures to work with paths.
   254 All of them have similar interfaces and they can be copied easily with
   254 All of them have similar interfaces and they can be copied easily with
   255 assignment operators and copy constructors. This makes it easy and
   255 assignment operators and copy constructors. This makes it easy and
   256 efficient to have e.g. the Dijkstra algorithm to store its result in
   256 efficient to have e.g. the Dijkstra algorithm to store its result in
   262 /**
   262 /**
   263 @defgroup auxdat Auxiliary Data Structures
   263 @defgroup auxdat Auxiliary Data Structures
   264 @ingroup datas
   264 @ingroup datas
   265 \brief Auxiliary data structures implemented in LEMON.
   265 \brief Auxiliary data structures implemented in LEMON.
   266 
   266 
   267 This group describes some data structures implemented in LEMON in
   267 This group contains some data structures implemented in LEMON in
   268 order to make it easier to implement combinatorial algorithms.
   268 order to make it easier to implement combinatorial algorithms.
   269 */
   269 */
   270 
   270 
   271 /**
   271 /**
   272 @defgroup algs Algorithms
   272 @defgroup algs Algorithms
   273 \brief This group describes the several algorithms
   273 \brief This group contains the several algorithms
   274 implemented in LEMON.
   274 implemented in LEMON.
   275 
   275 
   276 This group describes the several algorithms
   276 This group contains the several algorithms
   277 implemented in LEMON.
   277 implemented in LEMON.
   278 */
   278 */
   279 
   279 
   280 /**
   280 /**
   281 @defgroup search Graph Search
   281 @defgroup search Graph Search
   282 @ingroup algs
   282 @ingroup algs
   283 \brief Common graph search algorithms.
   283 \brief Common graph search algorithms.
   284 
   284 
   285 This group describes the common graph search algorithms, namely
   285 This group contains the common graph search algorithms, namely
   286 \e breadth-first \e search (BFS) and \e depth-first \e search (DFS).
   286 \e breadth-first \e search (BFS) and \e depth-first \e search (DFS).
   287 */
   287 */
   288 
   288 
   289 /**
   289 /**
   290 @defgroup shortest_path Shortest Path Algorithms
   290 @defgroup shortest_path Shortest Path Algorithms
   291 @ingroup algs
   291 @ingroup algs
   292 \brief Algorithms for finding shortest paths.
   292 \brief Algorithms for finding shortest paths.
   293 
   293 
   294 This group describes the algorithms for finding shortest paths in digraphs.
   294 This group contains the algorithms for finding shortest paths in digraphs.
   295 
   295 
   296  - \ref Dijkstra algorithm for finding shortest paths from a source node
   296  - \ref Dijkstra algorithm for finding shortest paths from a source node
   297    when all arc lengths are non-negative.
   297    when all arc lengths are non-negative.
   298  - \ref BellmanFord "Bellman-Ford" algorithm for finding shortest paths
   298  - \ref BellmanFord "Bellman-Ford" algorithm for finding shortest paths
   299    from a source node when arc lenghts can be either positive or negative,
   299    from a source node when arc lenghts can be either positive or negative,
   310 /**
   310 /**
   311 @defgroup max_flow Maximum Flow Algorithms
   311 @defgroup max_flow Maximum Flow Algorithms
   312 @ingroup algs
   312 @ingroup algs
   313 \brief Algorithms for finding maximum flows.
   313 \brief Algorithms for finding maximum flows.
   314 
   314 
   315 This group describes the algorithms for finding maximum flows and
   315 This group contains the algorithms for finding maximum flows and
   316 feasible circulations.
   316 feasible circulations.
   317 
   317 
   318 The \e maximum \e flow \e problem is to find a flow of maximum value between
   318 The \e maximum \e flow \e problem is to find a flow of maximum value between
   319 a single source and a single target. Formally, there is a \f$G=(V,A)\f$
   319 a single source and a single target. Formally, there is a \f$G=(V,A)\f$
   320 digraph, a \f$cap:A\rightarrow\mathbf{R}^+_0\f$ capacity function and
   320 digraph, a \f$cap:A\rightarrow\mathbf{R}^+_0\f$ capacity function and
   343 @defgroup min_cost_flow Minimum Cost Flow Algorithms
   343 @defgroup min_cost_flow Minimum Cost Flow Algorithms
   344 @ingroup algs
   344 @ingroup algs
   345 
   345 
   346 \brief Algorithms for finding minimum cost flows and circulations.
   346 \brief Algorithms for finding minimum cost flows and circulations.
   347 
   347 
   348 This group describes the algorithms for finding minimum cost flows and
   348 This group contains the algorithms for finding minimum cost flows and
   349 circulations.
   349 circulations.
   350 
   350 
   351 The \e minimum \e cost \e flow \e problem is to find a feasible flow of
   351 The \e minimum \e cost \e flow \e problem is to find a feasible flow of
   352 minimum total cost from a set of supply nodes to a set of demand nodes
   352 minimum total cost from a set of supply nodes to a set of demand nodes
   353 in a network with capacity constraints and arc costs.
   353 in a network with capacity constraints and arc costs.
   380 @defgroup min_cut Minimum Cut Algorithms
   380 @defgroup min_cut Minimum Cut Algorithms
   381 @ingroup algs
   381 @ingroup algs
   382 
   382 
   383 \brief Algorithms for finding minimum cut in graphs.
   383 \brief Algorithms for finding minimum cut in graphs.
   384 
   384 
   385 This group describes the algorithms for finding minimum cut in graphs.
   385 This group contains the algorithms for finding minimum cut in graphs.
   386 
   386 
   387 The \e minimum \e cut \e problem is to find a non-empty and non-complete
   387 The \e minimum \e cut \e problem is to find a non-empty and non-complete
   388 \f$X\f$ subset of the nodes with minimum overall capacity on
   388 \f$X\f$ subset of the nodes with minimum overall capacity on
   389 outgoing arcs. Formally, there is a \f$G=(V,A)\f$ digraph, a
   389 outgoing arcs. Formally, there is a \f$G=(V,A)\f$ digraph, a
   390 \f$cap: A\rightarrow\mathbf{R}^+_0\f$ capacity function. The minimum
   390 \f$cap: A\rightarrow\mathbf{R}^+_0\f$ capacity function. The minimum
   397 
   397 
   398 - \ref HaoOrlin "Hao-Orlin algorithm" for calculating minimum cut
   398 - \ref HaoOrlin "Hao-Orlin algorithm" for calculating minimum cut
   399   in directed graphs.
   399   in directed graphs.
   400 - \ref NagamochiIbaraki "Nagamochi-Ibaraki algorithm" for
   400 - \ref NagamochiIbaraki "Nagamochi-Ibaraki algorithm" for
   401   calculating minimum cut in undirected graphs.
   401   calculating minimum cut in undirected graphs.
   402 - \ref GomoryHuTree "Gomory-Hu tree computation" for calculating
   402 - \ref GomoryHu "Gomory-Hu tree computation" for calculating
   403   all-pairs minimum cut in undirected graphs.
   403   all-pairs minimum cut in undirected graphs.
   404 
   404 
   405 If you want to find minimum cut just between two distinict nodes,
   405 If you want to find minimum cut just between two distinict nodes,
   406 see the \ref max_flow "maximum flow problem".
   406 see the \ref max_flow "maximum flow problem".
   407 */
   407 */
   409 /**
   409 /**
   410 @defgroup graph_prop Connectivity and Other Graph Properties
   410 @defgroup graph_prop Connectivity and Other Graph Properties
   411 @ingroup algs
   411 @ingroup algs
   412 \brief Algorithms for discovering the graph properties
   412 \brief Algorithms for discovering the graph properties
   413 
   413 
   414 This group describes the algorithms for discovering the graph properties
   414 This group contains the algorithms for discovering the graph properties
   415 like connectivity, bipartiteness, euler property, simplicity etc.
   415 like connectivity, bipartiteness, euler property, simplicity etc.
   416 
   416 
   417 \image html edge_biconnected_components.png
   417 \image html edge_biconnected_components.png
   418 \image latex edge_biconnected_components.eps "bi-edge-connected components" width=\textwidth
   418 \image latex edge_biconnected_components.eps "bi-edge-connected components" width=\textwidth
   419 */
   419 */
   421 /**
   421 /**
   422 @defgroup planar Planarity Embedding and Drawing
   422 @defgroup planar Planarity Embedding and Drawing
   423 @ingroup algs
   423 @ingroup algs
   424 \brief Algorithms for planarity checking, embedding and drawing
   424 \brief Algorithms for planarity checking, embedding and drawing
   425 
   425 
   426 This group describes the algorithms for planarity checking,
   426 This group contains the algorithms for planarity checking,
   427 embedding and drawing.
   427 embedding and drawing.
   428 
   428 
   429 \image html planar.png
   429 \image html planar.png
   430 \image latex planar.eps "Plane graph" width=\textwidth
   430 \image latex planar.eps "Plane graph" width=\textwidth
   431 */
   431 */
   472 /**
   472 /**
   473 @defgroup spantree Minimum Spanning Tree Algorithms
   473 @defgroup spantree Minimum Spanning Tree Algorithms
   474 @ingroup algs
   474 @ingroup algs
   475 \brief Algorithms for finding a minimum cost spanning tree in a graph.
   475 \brief Algorithms for finding a minimum cost spanning tree in a graph.
   476 
   476 
   477 This group describes the algorithms for finding a minimum cost spanning
   477 This group contains the algorithms for finding a minimum cost spanning
   478 tree in a graph.
   478 tree in a graph.
   479 */
   479 */
   480 
   480 
   481 /**
   481 /**
   482 @defgroup auxalg Auxiliary Algorithms
   482 @defgroup auxalg Auxiliary Algorithms
   483 @ingroup algs
   483 @ingroup algs
   484 \brief Auxiliary algorithms implemented in LEMON.
   484 \brief Auxiliary algorithms implemented in LEMON.
   485 
   485 
   486 This group describes some algorithms implemented in LEMON
   486 This group contains some algorithms implemented in LEMON
   487 in order to make it easier to implement complex algorithms.
   487 in order to make it easier to implement complex algorithms.
   488 */
   488 */
   489 
   489 
   490 /**
   490 /**
   491 @defgroup approx Approximation Algorithms
   491 @defgroup approx Approximation Algorithms
   492 @ingroup algs
   492 @ingroup algs
   493 \brief Approximation algorithms.
   493 \brief Approximation algorithms.
   494 
   494 
   495 This group describes the approximation and heuristic algorithms
   495 This group contains the approximation and heuristic algorithms
   496 implemented in LEMON.
   496 implemented in LEMON.
   497 */
   497 */
   498 
   498 
   499 /**
   499 /**
   500 @defgroup gen_opt_group General Optimization Tools
   500 @defgroup gen_opt_group General Optimization Tools
   501 \brief This group describes some general optimization frameworks
   501 \brief This group contains some general optimization frameworks
   502 implemented in LEMON.
   502 implemented in LEMON.
   503 
   503 
   504 This group describes some general optimization frameworks
   504 This group contains some general optimization frameworks
   505 implemented in LEMON.
   505 implemented in LEMON.
   506 */
   506 */
   507 
   507 
   508 /**
   508 /**
   509 @defgroup lp_group Lp and Mip Solvers
   509 @defgroup lp_group Lp and Mip Solvers
   510 @ingroup gen_opt_group
   510 @ingroup gen_opt_group
   511 \brief Lp and Mip solver interfaces for LEMON.
   511 \brief Lp and Mip solver interfaces for LEMON.
   512 
   512 
   513 This group describes Lp and Mip solver interfaces for LEMON. The
   513 This group contains Lp and Mip solver interfaces for LEMON. The
   514 various LP solvers could be used in the same manner with this
   514 various LP solvers could be used in the same manner with this
   515 interface.
   515 interface.
   516 */
   516 */
   517 
   517 
   518 /**
   518 /**
   527 /**
   527 /**
   528 @defgroup metah Metaheuristics
   528 @defgroup metah Metaheuristics
   529 @ingroup gen_opt_group
   529 @ingroup gen_opt_group
   530 \brief Metaheuristics for LEMON library.
   530 \brief Metaheuristics for LEMON library.
   531 
   531 
   532 This group describes some metaheuristic optimization tools.
   532 This group contains some metaheuristic optimization tools.
   533 */
   533 */
   534 
   534 
   535 /**
   535 /**
   536 @defgroup utils Tools and Utilities
   536 @defgroup utils Tools and Utilities
   537 \brief Tools and utilities for programming in LEMON
   537 \brief Tools and utilities for programming in LEMON
   542 /**
   542 /**
   543 @defgroup gutils Basic Graph Utilities
   543 @defgroup gutils Basic Graph Utilities
   544 @ingroup utils
   544 @ingroup utils
   545 \brief Simple basic graph utilities.
   545 \brief Simple basic graph utilities.
   546 
   546 
   547 This group describes some simple basic graph utilities.
   547 This group contains some simple basic graph utilities.
   548 */
   548 */
   549 
   549 
   550 /**
   550 /**
   551 @defgroup misc Miscellaneous Tools
   551 @defgroup misc Miscellaneous Tools
   552 @ingroup utils
   552 @ingroup utils
   553 \brief Tools for development, debugging and testing.
   553 \brief Tools for development, debugging and testing.
   554 
   554 
   555 This group describes several useful tools for development,
   555 This group contains several useful tools for development,
   556 debugging and testing.
   556 debugging and testing.
   557 */
   557 */
   558 
   558 
   559 /**
   559 /**
   560 @defgroup timecount Time Measuring and Counting
   560 @defgroup timecount Time Measuring and Counting
   561 @ingroup misc
   561 @ingroup misc
   562 \brief Simple tools for measuring the performance of algorithms.
   562 \brief Simple tools for measuring the performance of algorithms.
   563 
   563 
   564 This group describes simple tools for measuring the performance
   564 This group contains simple tools for measuring the performance
   565 of algorithms.
   565 of algorithms.
   566 */
   566 */
   567 
   567 
   568 /**
   568 /**
   569 @defgroup exceptions Exceptions
   569 @defgroup exceptions Exceptions
   570 @ingroup utils
   570 @ingroup utils
   571 \brief Exceptions defined in LEMON.
   571 \brief Exceptions defined in LEMON.
   572 
   572 
   573 This group describes the exceptions defined in LEMON.
   573 This group contains the exceptions defined in LEMON.
   574 */
   574 */
   575 
   575 
   576 /**
   576 /**
   577 @defgroup io_group Input-Output
   577 @defgroup io_group Input-Output
   578 \brief Graph Input-Output methods
   578 \brief Graph Input-Output methods
   579 
   579 
   580 This group describes the tools for importing and exporting graphs
   580 This group contains the tools for importing and exporting graphs
   581 and graph related data. Now it supports the \ref lgf-format
   581 and graph related data. Now it supports the \ref lgf-format
   582 "LEMON Graph Format", the \c DIMACS format and the encapsulated
   582 "LEMON Graph Format", the \c DIMACS format and the encapsulated
   583 postscript (EPS) format.
   583 postscript (EPS) format.
   584 */
   584 */
   585 
   585 
   586 /**
   586 /**
   587 @defgroup lemon_io LEMON Graph Format
   587 @defgroup lemon_io LEMON Graph Format
   588 @ingroup io_group
   588 @ingroup io_group
   589 \brief Reading and writing LEMON Graph Format.
   589 \brief Reading and writing LEMON Graph Format.
   590 
   590 
   591 This group describes methods for reading and writing
   591 This group contains methods for reading and writing
   592 \ref lgf-format "LEMON Graph Format".
   592 \ref lgf-format "LEMON Graph Format".
   593 */
   593 */
   594 
   594 
   595 /**
   595 /**
   596 @defgroup eps_io Postscript Exporting
   596 @defgroup eps_io Postscript Exporting
   597 @ingroup io_group
   597 @ingroup io_group
   598 \brief General \c EPS drawer and graph exporter
   598 \brief General \c EPS drawer and graph exporter
   599 
   599 
   600 This group describes general \c EPS drawing methods and special
   600 This group contains general \c EPS drawing methods and special
   601 graph exporting tools.
   601 graph exporting tools.
   602 */
   602 */
   603 
   603 
   604 /**
   604 /**
   605 @defgroup dimacs_group DIMACS format
   605 @defgroup dimacs_group DIMACS format
   619 
   619 
   620 /**
   620 /**
   621 @defgroup concept Concepts
   621 @defgroup concept Concepts
   622 \brief Skeleton classes and concept checking classes
   622 \brief Skeleton classes and concept checking classes
   623 
   623 
   624 This group describes the data/algorithm skeletons and concept checking
   624 This group contains the data/algorithm skeletons and concept checking
   625 classes implemented in LEMON.
   625 classes implemented in LEMON.
   626 
   626 
   627 The purpose of the classes in this group is fourfold.
   627 The purpose of the classes in this group is fourfold.
   628 
   628 
   629 - These classes contain the documentations of the %concepts. In order
   629 - These classes contain the documentations of the %concepts. In order
   649 /**
   649 /**
   650 @defgroup graph_concepts Graph Structure Concepts
   650 @defgroup graph_concepts Graph Structure Concepts
   651 @ingroup concept
   651 @ingroup concept
   652 \brief Skeleton and concept checking classes for graph structures
   652 \brief Skeleton and concept checking classes for graph structures
   653 
   653 
   654 This group describes the skeletons and concept checking classes of LEMON's
   654 This group contains the skeletons and concept checking classes of LEMON's
   655 graph structures and helper classes used to implement these.
   655 graph structures and helper classes used to implement these.
   656 */
   656 */
   657 
   657 
   658 /**
   658 /**
   659 @defgroup map_concepts Map Concepts
   659 @defgroup map_concepts Map Concepts
   660 @ingroup concept
   660 @ingroup concept
   661 \brief Skeleton and concept checking classes for maps
   661 \brief Skeleton and concept checking classes for maps
   662 
   662 
   663 This group describes the skeletons and concept checking classes of maps.
   663 This group contains the skeletons and concept checking classes of maps.
   664 */
   664 */
   665 
   665 
   666 /**
   666 /**
   667 \anchor demoprograms
   667 \anchor demoprograms
   668 
   668