doc/groups.dox
author alpar
Tue, 09 May 2006 09:21:48 +0000
changeset 2072 224d3781b00b
parent 2060 be70ea3b957a
child 2084 59769591eb60
permissions -rw-r--r--
Create a separate group for matrices
alpar@814
     1
alpar@678
     2
/**
alpar@678
     3
@defgroup datas Data Structures
alpar@921
     4
This group describes the several graph structures implemented in LEMON.
alpar@678
     5
*/
alpar@430
     6
alpar@678
     7
/**
alpar@678
     8
@defgroup graphs Graph Structures
alpar@678
     9
@ingroup datas
alpar@921
    10
\brief Graph structures implemented in LEMON.
alpar@430
    11
marci@1172
    12
The implementation of combinatorial algorithms heavily relies on 
marci@1172
    13
efficient graph implementations. LEMON offers data structures which are 
marci@1172
    14
planned to be easily used in an experimental phase of implementation studies, 
marci@1172
    15
and thereafter the program code can be made efficient by small modifications. 
alpar@430
    16
marci@1172
    17
The most efficient implementation of diverse applications require the usage of different physical graph implementations. These differences appear in the size of 
marci@1172
    18
graph we require to handle, memory or time usage limitations or in 
marci@1172
    19
the set of operations through which the graph can be accessed. 
marci@1172
    20
LEMON provides several physical graph structures to meet the 
marci@1172
    21
diverging requirements of the possible users. 
marci@1172
    22
In order to save on running time or on memory usage, some structures may 
marci@1172
    23
fail to provide some graph features like edge or node deletion.
marci@1172
    24
marci@1172
    25
Alteration of standard containers need a very limited number of 
marci@1172
    26
operations, these together satisfy the everyday requirements. 
marci@1172
    27
In the case of graph strutures, different operations are needed which do 
alpar@2006
    28
not alter the physical graph, but gives another view. If some nodes or 
marci@1172
    29
edges have to be hidden or the reverse oriented graph have to be used, then 
marci@1172
    30
this is the case. It also may happen that in a flow implemenation 
alpar@2006
    31
the residual graph can be accessed by another algorithm, or a node-set 
alpar@2006
    32
is to be shrunk for another algorithm. 
marci@1172
    33
LEMON also provides a variety of graphs for these requirements called 
alpar@1401
    34
\ref graph_adaptors "graph adaptors". Adaptors cannot be used alone but only 
marci@1172
    35
in conjunction with other graph representation. 
alpar@430
    36
alpar@678
    37
You are free to use the graph structure that fit your requirements
alpar@678
    38
the best, most graph algorithms and auxiliary data structures can be used
marci@1172
    39
with any graph structures. 
alpar@678
    40
*/
alpar@430
    41
alpar@678
    42
/**
deba@1866
    43
@defgroup semi_adaptors Semi-Adaptors Classes for Graphs
deba@1866
    44
@ingroup graphs
deba@1866
    45
\brief Graph types between real graphs and graph adaptors.
deba@1866
    46
deba@1866
    47
Graph types between real graphs and graph adaptors. These classes
deba@1866
    48
wrap graphs to give new functionality as the adaptors do it. But the
deba@1866
    49
other way they are not light-weigth structures as the adaptors.
deba@1866
    50
*/
deba@1866
    51
deba@1866
    52
/**
alpar@1043
    53
@defgroup maps Maps 
alpar@1043
    54
@ingroup datas
alpar@1043
    55
\brief Some special purpose map to make life easier.
alpar@1043
    56
alpar@1043
    57
LEMON provides several special maps that e.g. combine
alpar@1043
    58
new maps from existing ones.
alpar@1043
    59
*/
alpar@1043
    60
alpar@1402
    61
/**
alpar@1402
    62
@defgroup graph_maps Graph Maps 
alpar@1402
    63
@ingroup maps
alpar@1402
    64
\brief Special Graph-Related Maps.
alpar@1402
    65
alpar@1402
    66
These maps are specifically designed to assign values to the nodes and edges of
alpar@1402
    67
graphs.
alpar@1402
    68
*/
alpar@1402
    69
alpar@1402
    70
alpar@1402
    71
/**
alpar@1402
    72
\defgroup map_adaptors Map Adaptors
alpar@1402
    73
\ingroup maps
alpar@1402
    74
\brief Tools to create new maps from existing ones
alpar@1402
    75
alpar@1402
    76
Map adaptors are used to create "implicit" maps from other maps.
alpar@1402
    77
alpar@1536
    78
Most of them are \ref lemon::concept::ReadMap "ReadMap"s. They can
alpar@1402
    79
make arithmetic oprerations between one or two maps (negation, scalig,
alpar@1402
    80
addition, multiplication etc.) or e.g. convert a map to another one
alpar@1402
    81
of different Value type.
alpar@1402
    82
*/
alpar@1402
    83
alpar@1043
    84
/**
alpar@2072
    85
@defgroup matrices Matrices 
alpar@2072
    86
@ingroup datas
alpar@2072
    87
\brief Two dimensional data storages.
alpar@2072
    88
alpar@2072
    89
Two dimensional
alpar@2072
    90
data storages.
alpar@2072
    91
*/
alpar@2072
    92
alpar@2072
    93
alpar@2072
    94
/**
alpar@678
    95
@defgroup auxdat Auxiliary Data Structures
alpar@678
    96
@ingroup datas
alpar@921
    97
\brief Some data structures implemented in LEMON.
alpar@406
    98
alpar@921
    99
This group describes the data structures implemented in LEMON in
alpar@678
   100
order to make it easier to implement combinatorial algorithms.
alpar@678
   101
*/
alpar@406
   102
alpar@678
   103
/**
deba@1996
   104
@defgroup graphbits Tools to Make It Easier to Make Graphs
alpar@785
   105
@ingroup auxdat
deba@1996
   106
\brief Tools to Make It Easier to Make Graphs.
alpar@785
   107
deba@1996
   108
This group describes the tools that makes it easier to make graphs and
deba@1996
   109
the maps that dynamically update with the graph changes.
alpar@785
   110
*/
alpar@785
   111
alpar@785
   112
/**
alpar@678
   113
@defgroup galgs Graph Algorithms
alpar@678
   114
\brief This group describes the several graph algorithms
alpar@921
   115
implemented in LEMON.
alpar@947
   116
alpar@947
   117
This group describes the several graph algorithms
alpar@947
   118
implemented in LEMON.
alpar@947
   119
*/
alpar@947
   120
alpar@947
   121
/**
alpar@947
   122
@defgroup gutils General Graph Utilities
deba@1914
   123
@ingroup galgs
alpar@947
   124
\brief This group describes some simple general graph utilities.
alpar@947
   125
alpar@947
   126
This group describes some simple general graph utilities.
alpar@678
   127
*/
alpar@678
   128
alpar@678
   129
/**
alpar@1329
   130
@defgroup gen_opt_group General Optimization Tools
alpar@1329
   131
\brief This group describes some general optimization frameworks
alpar@1329
   132
implemented in LEMON.
alpar@1329
   133
deba@2060
   134
This group describes some general optimization frameworks
alpar@1329
   135
implemented in LEMON.
alpar@1329
   136
alpar@1329
   137
*/
alpar@1329
   138
alpar@1329
   139
/**
alpar@758
   140
@defgroup flowalgs Path and Flow Algorithms
alpar@678
   141
@ingroup galgs
alpar@758
   142
\brief This group describes the algorithms
alpar@758
   143
for finding paths and flows in graphs.
deba@2060
   144
deba@2060
   145
This group describes the algorithms
deba@2060
   146
for finding paths and flows in graphs.
deba@2060
   147
deba@2060
   148
\image html flow.png
deba@2060
   149
\image latex flow.eps "Graph flow" width=\textwidth
alpar@678
   150
*/
alpar@678
   151
alpar@678
   152
/**
deba@1750
   153
@defgroup topology Topology related algorithms
deba@1750
   154
@ingroup galgs
deba@1750
   155
\brief This group describes the algorithms
deba@1750
   156
for discover the topology of the graphs.
deba@2060
   157
deba@2060
   158
This group describes the algorithms
deba@2060
   159
for discover the topology of the graphs.
deba@2060
   160
deba@2060
   161
\image html edge_biconnected_components.png
deba@2060
   162
\image latex edge_biconnected_components.eps "bi-edge-connected components" width=\textwidth
deba@2060
   163
deba@1750
   164
*/
deba@1750
   165
deba@1750
   166
/**
deba@2042
   167
@defgroup matching Matching algorithms in graphs and bipartite graphs
deba@2042
   168
@ingroup galgs
deba@2042
   169
\brief This group describes the algorithms
deba@2042
   170
for find matchings in graphs and bipartite graphs.
deba@2060
   171
deba@2060
   172
This group provides some algorithm objects and function
deba@2060
   173
to calculate matchings in graphs and bipartite graphs.
deba@2060
   174
deba@2060
   175
\image html bipartite_matching.png
deba@2060
   176
\image latex bipartite_matching.eps "Bipartite Matching" width=\textwidth
deba@2060
   177
deba@2042
   178
*/
deba@2042
   179
deba@2042
   180
/**
alpar@1151
   181
@defgroup exceptions Exceptions
alpar@1151
   182
This group contains the exceptions thrown by LEMON library
alpar@1151
   183
*/
alpar@1151
   184
alpar@1151
   185
/**
alpar@678
   186
@defgroup misc Miscellaneous Tools
alpar@678
   187
Here you can find several useful tools for development,
alpar@678
   188
debugging and testing.
alpar@678
   189
*/
alpar@678
   190
alpar@678
   191
/**
alpar@1847
   192
@defgroup timecount Time measuring and Counting
alpar@1847
   193
@ingroup misc
alpar@1847
   194
Here you can find simple tools for measuring the performance
alpar@1847
   195
of algorithms.
alpar@1847
   196
*/
alpar@1847
   197
alpar@1847
   198
/**
deba@2016
   199
@defgroup io_group Input-Output
alpar@1287
   200
Here you can find tools for imporing and exporting graphs and graph related
alpar@1287
   201
data
alpar@1287
   202
*/
alpar@1287
   203
alpar@1287
   204
/**
deba@2016
   205
@defgroup section_io Section readers and writers
deba@2016
   206
@ingroup io_group
deba@2016
   207
\brief Section readers and writers for lemon Input-Output.
deba@2016
   208
deba@2016
   209
Here you can find which section readers and writers can attach to
deba@2016
   210
the LemonReader and LemonWriter.
deba@2016
   211
*/
deba@2016
   212
deba@2016
   213
/**
deba@2016
   214
@defgroup item_io Item Readers and Writers
deba@2016
   215
@ingroup io_group
deba@2016
   216
\brief Item readers and writers for lemon Input-Output.
deba@2016
   217
deba@2016
   218
The Input-Output classes can handle more data type by example
deba@2016
   219
as map or attribute value. Each of these should be written and
deba@2016
   220
read some way. The module make possible to do this.  
deba@2016
   221
*/
deba@2016
   222
deba@2016
   223
/**
klao@1030
   224
@defgroup concept Concepts
klao@959
   225
\brief Skeleton classes and concept checking classes
alpar@794
   226
klao@959
   227
This group describes the data/algorithm skeletons and concept checking
klao@1030
   228
classes implemented in LEMON.
klao@1030
   229
klao@1030
   230
One aim of these classes is to make it easier to check if a certain
klao@1030
   231
class or template function is correctly implemented.
klao@1030
   232
klao@1030
   233
The other (sometimes even more important) aim is to document the concepts.
klao@1030
   234
alpar@794
   235
*/
alpar@794
   236
klao@1030
   237
/**
klao@1030
   238
@defgroup graph_concepts Graph Structure Concepts
klao@1030
   239
@ingroup concept
klao@1030
   240
\brief Skeleton and concept checking classes for graph structures
klao@1030
   241
klao@1030
   242
This group contains the skeletons and concept checking classes of LEMON's
klao@1030
   243
graph structures and helper classes used to implement these.
klao@1030
   244
*/
alpar@794
   245
alpar@1587
   246
/* --- Unused group
alpar@678
   247
@defgroup experimental Experimental Structures and Algorithms
alpar@678
   248
This group contains some Experimental structures and algorithms.
alpar@678
   249
The stuff here is subject to change.
alpar@678
   250
*/
alpar@1151
   251
alpar@1558
   252
/**
athos@1582
   253
\anchor demoprograms
athos@1582
   254
alpar@1558
   255
@defgroup demos Demo programs
alpar@1558
   256
alpar@1559
   257
Some demo programs are listed here. Their full source codes can be found in
alpar@1558
   258
the \c demo subdirectory of the source tree.
alpar@1558
   259
ladanyi@1639
   260
The standard compilation procedure (<tt>./configure;make</tt>) will compile
ladanyi@1639
   261
them, as well. 
alpar@1558
   262
alpar@1558
   263
*/
alpar@1558
   264