COIN-OR::LEMON - Graph Library

source: lemon-0.x/doc/groups.dox @ 2401:7f20ec638bc2

Last change on this file since 2401:7f20ec638bc2 was 2391:14a343be7a5a, checked in by Alpar Juttner, 17 years ago

Happy New Year to all source files!

File size: 12.0 KB
RevLine 
[2391]1/* -*- C++ -*-
2 *
3 * This file is a part of LEMON, a generic C++ optimization library
4 *
5 * Copyright (C) 2003-2007
6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
7 * (Egervary Research Group on Combinatorial Optimization, EGRES).
8 *
9 * Permission to use, modify and distribute this software is granted
10 * provided that this copyright notice appears in all copies. For
11 * precise terms see the accompanying LICENSE file.
12 *
13 * This software is provided "AS IS" with no warranty of any kind,
14 * express or implied, and with no claim as to its suitability for any
15 * purpose.
16 *
17 */
[814]18
[678]19/**
20@defgroup datas Data Structures
[921]21This group describes the several graph structures implemented in LEMON.
[678]22*/
[430]23
[678]24/**
25@defgroup graphs Graph Structures
26@ingroup datas
[921]27\brief Graph structures implemented in LEMON.
[430]28
[1172]29The implementation of combinatorial algorithms heavily relies on
30efficient graph implementations. LEMON offers data structures which are
31planned to be easily used in an experimental phase of implementation studies,
32and thereafter the program code can be made efficient by small modifications.
[430]33
[2084]34The most efficient implementation of diverse applications require the
35usage of different physical graph implementations. These differences
36appear in the size of graph we require to handle, memory or time usage
37limitations or in the set of operations through which the graph can be
38accessed.  LEMON provides several physical graph structures to meet
39the diverging requirements of the possible users.  In order to save on
40running time or on memory usage, some structures may fail to provide
41some graph features like edge or node deletion.
[1172]42
43Alteration of standard containers need a very limited number of
44operations, these together satisfy the everyday requirements.
[2117]45In the case of graph structures, different operations are needed which do
[2006]46not alter the physical graph, but gives another view. If some nodes or
[1172]47edges have to be hidden or the reverse oriented graph have to be used, then
[2117]48this is the case. It also may happen that in a flow implementation
[2006]49the residual graph can be accessed by another algorithm, or a node-set
50is to be shrunk for another algorithm.
[1172]51LEMON also provides a variety of graphs for these requirements called
[1401]52\ref graph_adaptors "graph adaptors". Adaptors cannot be used alone but only
[1172]53in conjunction with other graph representation.
[430]54
[678]55You are free to use the graph structure that fit your requirements
56the best, most graph algorithms and auxiliary data structures can be used
[1172]57with any graph structures.
[678]58*/
[430]59
[678]60/**
[1866]61@defgroup semi_adaptors Semi-Adaptors Classes for Graphs
62@ingroup graphs
63\brief Graph types between real graphs and graph adaptors.
64
[2117]65Graph types between real graphs and graph adaptors. These classes wrap
66graphs to give new functionality as the adaptors do it. On the other
67hand they are not light-weight structures as the adaptors.
[1866]68*/
69
70/**
[1043]71@defgroup maps Maps
72@ingroup datas
73\brief Some special purpose map to make life easier.
74
75LEMON provides several special maps that e.g. combine
76new maps from existing ones.
77*/
78
[1402]79/**
80@defgroup graph_maps Graph Maps
81@ingroup maps
82\brief Special Graph-Related Maps.
83
84These maps are specifically designed to assign values to the nodes and edges of
85graphs.
86*/
87
88
89/**
90\defgroup map_adaptors Map Adaptors
91\ingroup maps
92\brief Tools to create new maps from existing ones
93
94Map adaptors are used to create "implicit" maps from other maps.
95
[2260]96Most of them are \ref lemon::concepts::ReadMap "ReadMap"s. They can
[2117]97make arithmetic operations between one or two maps (negation, scaling,
[1402]98addition, multiplication etc.) or e.g. convert a map to another one
99of different Value type.
100*/
101
[1043]102/**
[2072]103@defgroup matrices Matrices
104@ingroup datas
105\brief Two dimensional data storages.
106
[2084]107Two dimensional data storages.
[2072]108*/
109
[2084]110/**
111@defgroup paths Path Structures
112@ingroup datas
113\brief Path structures implemented in LEMON.
114
115LEMON provides flexible data structures
116to work with paths.
117
118All of them have the same interface, especially they can be built or extended
119using a standard Builder subclass. This make is easy to have e.g. the Dijkstra
120algorithm to store its result in any kind of path structure.
121
[2260]122\sa lemon::concepts::Path
[2084]123
124*/
[2072]125
126/**
[678]127@defgroup auxdat Auxiliary Data Structures
128@ingroup datas
[921]129\brief Some data structures implemented in LEMON.
[406]130
[921]131This group describes the data structures implemented in LEMON in
[678]132order to make it easier to implement combinatorial algorithms.
133*/
[406]134
[785]135
136/**
[2084]137@defgroup algs Algorithms
138\brief This group describes the several algorithms
[921]139implemented in LEMON.
[947]140
[2084]141This group describes the several algorithms
[947]142implemented in LEMON.
143*/
144
145/**
[2376]146@defgroup search Graph Search
[2084]147@ingroup algs
[2376]148\brief This group contains the common graph
149search algorithms.
[947]150
[2376]151This group contains the common graph
152search algorithms like Bfs and Dfs.
[678]153*/
154
155/**
[2376]156@defgroup shortest_path Shortest Path algorithms
[2084]157@ingroup algs
[758]158\brief This group describes the algorithms
[2376]159for finding shortest paths.
[2060]160
[2376]161This group describes the algorithms for finding shortest paths in
162graphs.
163
164*/
165
166/**
167@defgroup max_flow Maximum Flow algorithms
168@ingroup algs
169\brief This group describes the algorithms for finding maximum flows.
170
[2377]171This group describes the algorithms for finding maximum flows and
172feasible circulations.
[2060]173
174\image html flow.png
175\image latex flow.eps "Graph flow" width=\textwidth
[678]176*/
177
178/**
[2376]179@defgroup min_cost_flow Minimum Cost Flow algorithms
180@ingroup algs
181
182\brief This group describes the algorithms
183for finding minimum cost flows and circulations.
184
185This group describes the algorithms for finding minimum cost flows and
186circulations. 
187*/
188
189/**
190@defgroup min_cut Minimum Cut algorithms
191@ingroup algs
192\brief This group describes the algorithms
193for finding minimum cut in graphs.
194
195This group describes the algorithms
196for finding minimum cut in graphs.
197*/
198
199/**
[1750]200@defgroup topology Topology related algorithms
[2084]201@ingroup algs
[1750]202\brief This group describes the algorithms
203for discover the topology of the graphs.
[2060]204
205This group describes the algorithms
206for discover the topology of the graphs.
207
208\image html edge_biconnected_components.png
209\image latex edge_biconnected_components.eps "bi-edge-connected components" width=\textwidth
[1750]210*/
211
212/**
[2376]213@defgroup matching Matching algorithms
[2084]214@ingroup algs
[2042]215\brief This group describes the algorithms
216for find matchings in graphs and bipartite graphs.
[2060]217
218This group provides some algorithm objects and function
219to calculate matchings in graphs and bipartite graphs.
220
221\image html bipartite_matching.png
222\image latex bipartite_matching.eps "Bipartite Matching" width=\textwidth
223
[2042]224*/
225
226/**
[2376]227@defgroup spantree Minimum Spanning Tree algorithms
[2084]228@ingroup algs
[2117]229\brief This group contains the algorithms for finding a minimum cost spanning
[2084]230tree in a graph
231
[2117]232This group contains the algorithms for finding a minimum cost spanning
[2084]233tree in a graph
234*/
235
236
237/**
[2376]238@defgroup auxalg Auxiliary algorithms
[2084]239@ingroup algs
240\brief Some algorithms implemented in LEMON.
241
242This group describes the algorithms in LEMON in order to make
243it easier to implement complex algorithms.
[2376]244*/
[2084]245
[2376]246/**
247@defgroup approx Approximation algorithms
248\brief Approximation algorithms
249
250Approximation and heuristic algorithms
[2084]251*/
252
253/**
254@defgroup gen_opt_group General Optimization Tools
255\brief This group describes some general optimization frameworks
256implemented in LEMON.
257
258This group describes some general optimization frameworks
259implemented in LEMON.
260
[1151]261*/
262
[2370]263/**
[2371]264@defgroup lp_group Lp and Mip solvers
[2370]265@ingroup gen_opt_group
266\brief Lp and Mip solver interfaces for LEMON.
267
268This group describes Lp and Mip solver interfaces for LEMON. The
269various LP solvers could be used in the same manner with this
270interface.
271
272*/
273
[2368]274/**
[2370]275@defgroup lp_utils Tools for Lp and Mip solvers
276@ingroup lp_group
277\brief This group adds some helper tools to the Lp and Mip solvers
278implemented in LEMON.
[2368]279
280This group adds some helper tools to general optimization framework
281implemented in LEMON.
282*/
283
[1151]284/**
[2370]285@defgroup metah Metaheuristics
286@ingroup gen_opt_group
287\brief Metaheuristics for LEMON library.
288
289This group contains some metaheuristic optimization tools.
290*/
291
292/**
[2376]293@defgroup utils Tools and Utilities
294\brief Tools and Utilities for Programming in LEMON
295
296Tools and Utilities for Programming in LEMON
297*/
298
299/**
300@defgroup gutils Basic Graph Utilities
301@ingroup utils
302\brief This group describes some simple basic graph utilities.
303
304This group describes some simple basic graph utilities.
305*/
306
307/**
[678]308@defgroup misc Miscellaneous Tools
[2376]309@ingroup utils
[678]310Here you can find several useful tools for development,
311debugging and testing.
312*/
313
[2376]314
[678]315/**
[1847]316@defgroup timecount Time measuring and Counting
317@ingroup misc
318Here you can find simple tools for measuring the performance
319of algorithms.
320*/
321
322/**
[2376]323@defgroup graphbits Tools for Graph Implementation
324@ingroup utils
325\brief Tools to Make It Easier to Make Graphs.
326
327This group describes the tools that makes it easier to make graphs and
328the maps that dynamically update with the graph changes.
329*/
330
331/**
332@defgroup exceptions Exceptions
333@ingroup utils
334This group contains the exceptions thrown by LEMON library
335*/
336
337/**
[2016]338@defgroup io_group Input-Output
[2084]339\brief Several Graph Input-Output methods
340
341Here you can find tools for importing and exporting graphs
342and graph related data. Now it supports the LEMON format, the
[2117]343\c DIMACS format and the encapsulated postscript format.
[2084]344*/
345
346/**
347@defgroup lemon_io Lemon Input-Output
348@ingroup io_group
349\brief Reading and writing LEMON format
350
351Methods for reading and writing LEMON format. More about this
352format you can find on the \ref graph-io-page "Graph Input-Output"
353tutorial pages.
[1287]354*/
355
356/**
[2016]357@defgroup section_io Section readers and writers
[2084]358@ingroup lemon_io
[2016]359\brief Section readers and writers for lemon Input-Output.
360
361Here you can find which section readers and writers can attach to
362the LemonReader and LemonWriter.
363*/
364
365/**
366@defgroup item_io Item Readers and Writers
[2084]367@ingroup lemon_io
[2016]368\brief Item readers and writers for lemon Input-Output.
369
370The Input-Output classes can handle more data type by example
371as map or attribute value. Each of these should be written and
372read some way. The module make possible to do this. 
373*/
374
375/**
[2084]376@defgroup eps_io Postscript exporting
377@ingroup io_group
[2117]378\brief General \c EPS drawer and graph exporter
[2084]379
[2117]380This group contains general \c EPS drawing methods and special
[2084]381graph exporting tools.
382*/
383
384
385/**
[1030]386@defgroup concept Concepts
[959]387\brief Skeleton classes and concept checking classes
[794]388
[959]389This group describes the data/algorithm skeletons and concept checking
[1030]390classes implemented in LEMON.
391
[2117]392The purpose of the classes in this group is fourfold.
393 
394- These classes contain the documentations of the concepts. In order
395  to avoid document multiplications, an implementation of a concept
396  simply refers to the corresponding concept class.
[1030]397
[2233]398- These classes declare every functions, <tt>typedef</tt>s etc. an
[2117]399  implementation of the concepts should provide, however completely
400  without implementations and real data structures behind the
401  interface. On the other hand they should provide nothing else. All
402  the algorithms working on a data structure meeting a certain concept
403  should compile with these classes. (Though it will not run properly,
404  of course.) In this way it is easily to check if an algorithm
405  doesn't use any extra feature of a certain implementation.
406
[2233]407- The concept descriptor classes also provide a <em>checker class</em>
[2117]408  that makes it possible check whether a certain implementation of a
409  concept indeed provides all the required features.
410
411- Finally, They can serve as a skeleton of a new implementation of a concept.
[1030]412
[794]413*/
414
[2084]415
[1030]416/**
417@defgroup graph_concepts Graph Structure Concepts
418@ingroup concept
419\brief Skeleton and concept checking classes for graph structures
420
421This group contains the skeletons and concept checking classes of LEMON's
422graph structures and helper classes used to implement these.
423*/
[794]424
[1587]425/* --- Unused group
[678]426@defgroup experimental Experimental Structures and Algorithms
427This group contains some Experimental structures and algorithms.
428The stuff here is subject to change.
429*/
[1151]430
[1558]431/**
[1582]432\anchor demoprograms
433
[1558]434@defgroup demos Demo programs
435
[1559]436Some demo programs are listed here. Their full source codes can be found in
[1558]437the \c demo subdirectory of the source tree.
438
[1639]439The standard compilation procedure (<tt>./configure;make</tt>) will compile
440them, as well.
[1558]441
442*/
443
Note: See TracBrowser for help on using the repository browser.