# source:lemon-0.x/doc/groups.dox@2097:6b2903440d2b

Last change on this file since 2097:6b2903440d2b was 2084:59769591eb60, checked in by Balazs Dezso, 15 years ago

Documentation improvements

Rearrangements:

IO modules
Algorithms

New documentation:

Demos:

strongly_connected_orientation.cc

Benchmarks:

swap_bipartite_bench.cc

File size: 8.8 KB
Line
1
2/**
3@defgroup datas Data Structures
4This group describes the several graph structures implemented in LEMON.
5*/
6
7/**
8@defgroup graphs Graph Structures
9@ingroup datas
10\brief Graph structures implemented in LEMON.
11
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.
16
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.
25
26Alteration of standard containers need a very limited number of
27operations, these together satisfy the everyday requirements.
28In the case of graph strutures, different operations are needed which do
29not alter the physical graph, but gives another view. If some nodes or
30edges have to be hidden or the reverse oriented graph have to be used, then
31this is the case. It also may happen that in a flow implemenation
32the residual graph can be accessed by another algorithm, or a node-set
33is to be shrunk for another algorithm.
34LEMON also provides a variety of graphs for these requirements called
36in conjunction with other graph representation.
37
38You are free to use the graph structure that fit your requirements
39the best, most graph algorithms and auxiliary data structures can be used
40with any graph structures.
41*/
42
43/**
45@ingroup graphs
46\brief Graph types between real graphs and graph adaptors.
47
48Graph types between real graphs and graph adaptors. These classes
49wrap graphs to give new functionality as the adaptors do it. But the
50other way they are not light-weigth structures as the adaptors.
51*/
52
53/**
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
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/**
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
80make arithmetic oprerations between one or two maps (negation, scaling,
81addition, multiplication etc.) or e.g. convert a map to another one
82of different Value type.
83*/
84
85/**
86@defgroup matrices Matrices
87@ingroup datas
88\brief Two dimensional data storages.
89
90Two dimensional data storages.
91*/
92
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
105\sa lemon::concept::Path
106
107*/
108
109/**
110@defgroup auxdat Auxiliary Data Structures
111@ingroup datas
112\brief Some data structures implemented in LEMON.
113
114This group describes the data structures implemented in LEMON in
115order to make it easier to implement combinatorial algorithms.
116*/
117
118/**
119@defgroup graphbits Tools to Make It Easier to Make Graphs
120@ingroup auxdat
121\brief Tools to Make It Easier to Make Graphs.
122
123This group describes the tools that makes it easier to make graphs and
124the maps that dynamically update with the graph changes.
125*/
126
127/**
128@defgroup algs Algorithms
129\brief This group describes the several algorithms
130implemented in LEMON.
131
132This group describes the several algorithms
133implemented in LEMON.
134*/
135
136/**
137@defgroup gutils General Graph Utilities
138@ingroup algs
139\brief This group describes some simple general graph utilities.
140
141This group describes some simple general graph utilities.
142*/
143
144/**
145@defgroup flowalgs Path and Flow Algorithms
146@ingroup algs
147\brief This group describes the algorithms
148for finding paths and flows in graphs.
149
150This group describes the algorithms
151for finding paths and flows in graphs.
152
153\image html flow.png
154\image latex flow.eps "Graph flow" width=\textwidth
155*/
156
157/**
158@defgroup topology Topology related algorithms
159@ingroup algs
160\brief This group describes the algorithms
161for discover the topology of the graphs.
162
163This group describes the algorithms
164for discover the topology of the graphs.
165
166\image html edge_biconnected_components.png
167\image latex edge_biconnected_components.eps "bi-edge-connected components" width=\textwidth
168
169*/
170
171/**
172@defgroup matching Matching algorithms in graphs and bipartite graphs
173@ingroup algs
174\brief This group describes the algorithms
175for find matchings in graphs and bipartite graphs.
176
177This group provides some algorithm objects and function
178to calculate matchings in graphs and bipartite graphs.
179
180\image html bipartite_matching.png
181\image latex bipartite_matching.eps "Bipartite Matching" width=\textwidth
182
183*/
184
185/**
186@defgroup spantree Minimum Cost Spanning Tree Algorithms
187@ingroup algs
188\brief This group containes the algorithms for finding a minimum cost spanning
189tree in a graph
190
191This group containes the algorithms for finding a minimum cost spanning
192tree in a graph
193*/
194
195
196/**
197@defgroup auxalg Auxiliary Algorithms
198@ingroup algs
199\brief Some algorithms implemented in LEMON.
200
201This group describes the algorithms in LEMON in order to make
202it easier to implement complex algorithms.
203
204*/
205
206/**
207@defgroup gen_opt_group General Optimization Tools
208\brief This group describes some general optimization frameworks
209implemented in LEMON.
210
211This group describes some general optimization frameworks
212implemented in LEMON.
213
214*/
215
216/**
217@defgroup misc Miscellaneous Tools
218Here you can find several useful tools for development,
219debugging and testing.
220*/
221
222/**
223@defgroup timecount Time measuring and Counting
224@ingroup misc
225Here you can find simple tools for measuring the performance
226of algorithms.
227*/
228
229/**
230@defgroup io_group Input-Output
231\brief Several Graph Input-Output methods
232
233Here you can find tools for importing and exporting graphs
234and graph related data. Now it supports the LEMON format, the
235dimacs format and the encapsulated postscript format.
236*/
237
238/**
239@defgroup lemon_io Lemon Input-Output
240@ingroup io_group
241\brief Reading and writing LEMON format
242
244format you can find on the \ref graph-io-page "Graph Input-Output"
245tutorial pages.
246
247*/
248
249/**
250@defgroup section_io Section readers and writers
251@ingroup lemon_io
252\brief Section readers and writers for lemon Input-Output.
253
254Here you can find which section readers and writers can attach to
256*/
257
258/**
259@defgroup item_io Item Readers and Writers
260@ingroup lemon_io
261\brief Item readers and writers for lemon Input-Output.
262
263The Input-Output classes can handle more data type by example
264as map or attribute value. Each of these should be written and
265read some way. The module make possible to do this.
266*/
267
268/**
269@defgroup eps_io Postscript exporting
270@ingroup io_group
271\brief General EPS drawer and graph exporter
272
273This group contains general EPS drawing methods and special
274graph exporting tools.
275*/
276
277/**
278@defgroup exceptions Exceptions
279This group contains the exceptions thrown by LEMON library
280*/
281
282/**
283@defgroup concept Concepts
284\brief Skeleton classes and concept checking classes
285
286This group describes the data/algorithm skeletons and concept checking
287classes implemented in LEMON.
288
289One aim of these classes is to make it easier to check if a certain
290class or template function is correctly implemented.
291
292The other (sometimes even more important) aim is to document the concepts.
293
294*/
295
296
297/**
298@defgroup graph_concepts Graph Structure Concepts
299@ingroup concept
300\brief Skeleton and concept checking classes for graph structures
301
302This group contains the skeletons and concept checking classes of LEMON's
303graph structures and helper classes used to implement these.
304*/
305
306/* --- Unused group
307@defgroup experimental Experimental Structures and Algorithms
308This group contains some Experimental structures and algorithms.
309The stuff here is subject to change.
310*/
311
312/**
313\anchor demoprograms
314
315@defgroup demos Demo programs
316
317Some demo programs are listed here. Their full source codes can be found in
318the \c demo subdirectory of the source tree.
319
320The standard compilation procedure (<tt>./configure;make</tt>) will compile
321them, as well.
322
323*/
324
Note: See TracBrowser for help on using the repository browser.