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 |