COIN-OR::LEMON - Graph Library

source: lemon-0.x/doc/groups.dox @ 2390:8450951a8e2d

Last change on this file since 2390:8450951a8e2d was 2377:83775fab25dc, checked in by Balazs Dezso, 18 years ago

Minor changes

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