doc/groups.dox
author deba
Mon, 03 Apr 2006 09:45:23 +0000
changeset 2031 080d51024ac5
parent 2006 00d59f733817
child 2042 bdc953f2a449
permissions -rw-r--r--
Correcting the structure of the graph's and adaptor's map.
The template assign operators and map iterators can be used for adaptors also.

Some bugfix in the adaptors

New class SwapBpUGraphAdaptor which swaps the two nodeset of the graph.
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@678
    85
@defgroup auxdat Auxiliary Data Structures
alpar@678
    86
@ingroup datas
alpar@921
    87
\brief Some data structures implemented in LEMON.
alpar@406
    88
alpar@921
    89
This group describes the data structures implemented in LEMON in
alpar@678
    90
order to make it easier to implement combinatorial algorithms.
alpar@678
    91
*/
alpar@406
    92
alpar@678
    93
/**
deba@1996
    94
@defgroup graphbits Tools to Make It Easier to Make Graphs
alpar@785
    95
@ingroup auxdat
deba@1996
    96
\brief Tools to Make It Easier to Make Graphs.
alpar@785
    97
deba@1996
    98
This group describes the tools that makes it easier to make graphs and
deba@1996
    99
the maps that dynamically update with the graph changes.
alpar@785
   100
*/
alpar@785
   101
alpar@785
   102
/**
alpar@678
   103
@defgroup galgs Graph Algorithms
alpar@678
   104
\brief This group describes the several graph algorithms
alpar@921
   105
implemented in LEMON.
alpar@947
   106
alpar@947
   107
This group describes the several graph algorithms
alpar@947
   108
implemented in LEMON.
alpar@947
   109
*/
alpar@947
   110
alpar@947
   111
/**
alpar@947
   112
@defgroup gutils General Graph Utilities
deba@1914
   113
@ingroup galgs
alpar@947
   114
\brief This group describes some simple general graph utilities.
alpar@947
   115
alpar@947
   116
This group describes some simple general graph utilities.
alpar@678
   117
*/
alpar@678
   118
alpar@678
   119
/**
alpar@1329
   120
@defgroup gen_opt_group General Optimization Tools
alpar@1329
   121
\brief This group describes some general optimization frameworks
alpar@1329
   122
implemented in LEMON.
alpar@1329
   123
alpar@1329
   124
\brief This group describes some general optimization frameworks
alpar@1329
   125
implemented in LEMON.
alpar@1329
   126
alpar@1329
   127
*/
alpar@1329
   128
alpar@1329
   129
/**
alpar@758
   130
@defgroup flowalgs Path and Flow Algorithms
alpar@678
   131
@ingroup galgs
alpar@758
   132
\brief This group describes the algorithms
alpar@758
   133
for finding paths and flows in graphs.
alpar@678
   134
*/
alpar@678
   135
alpar@678
   136
/**
deba@1750
   137
@defgroup topology Topology related algorithms
deba@1750
   138
@ingroup galgs
deba@1750
   139
\brief This group describes the algorithms
deba@1750
   140
for discover the topology of the graphs.
deba@1750
   141
*/
deba@1750
   142
deba@1750
   143
/**
alpar@1151
   144
@defgroup exceptions Exceptions
alpar@1151
   145
This group contains the exceptions thrown by LEMON library
alpar@1151
   146
*/
alpar@1151
   147
alpar@1151
   148
/**
alpar@678
   149
@defgroup misc Miscellaneous Tools
alpar@678
   150
Here you can find several useful tools for development,
alpar@678
   151
debugging and testing.
alpar@678
   152
*/
alpar@678
   153
alpar@678
   154
/**
alpar@1847
   155
@defgroup timecount Time measuring and Counting
alpar@1847
   156
@ingroup misc
alpar@1847
   157
Here you can find simple tools for measuring the performance
alpar@1847
   158
of algorithms.
alpar@1847
   159
*/
alpar@1847
   160
alpar@1847
   161
/**
deba@2016
   162
@defgroup io_group Input-Output
alpar@1287
   163
Here you can find tools for imporing and exporting graphs and graph related
alpar@1287
   164
data
alpar@1287
   165
*/
alpar@1287
   166
alpar@1287
   167
/**
deba@2016
   168
@defgroup section_io Section readers and writers
deba@2016
   169
@ingroup io_group
deba@2016
   170
\brief Section readers and writers for lemon Input-Output.
deba@2016
   171
deba@2016
   172
Here you can find which section readers and writers can attach to
deba@2016
   173
the LemonReader and LemonWriter.
deba@2016
   174
*/
deba@2016
   175
deba@2016
   176
/**
deba@2016
   177
@defgroup item_io Item Readers and Writers
deba@2016
   178
@ingroup io_group
deba@2016
   179
\brief Item readers and writers for lemon Input-Output.
deba@2016
   180
deba@2016
   181
The Input-Output classes can handle more data type by example
deba@2016
   182
as map or attribute value. Each of these should be written and
deba@2016
   183
read some way. The module make possible to do this.  
deba@2016
   184
*/
deba@2016
   185
deba@2016
   186
/**
klao@1030
   187
@defgroup concept Concepts
klao@959
   188
\brief Skeleton classes and concept checking classes
alpar@794
   189
klao@959
   190
This group describes the data/algorithm skeletons and concept checking
klao@1030
   191
classes implemented in LEMON.
klao@1030
   192
klao@1030
   193
One aim of these classes is to make it easier to check if a certain
klao@1030
   194
class or template function is correctly implemented.
klao@1030
   195
klao@1030
   196
The other (sometimes even more important) aim is to document the concepts.
klao@1030
   197
alpar@794
   198
*/
alpar@794
   199
klao@1030
   200
/**
klao@1030
   201
@defgroup graph_concepts Graph Structure Concepts
klao@1030
   202
@ingroup concept
klao@1030
   203
\brief Skeleton and concept checking classes for graph structures
klao@1030
   204
klao@1030
   205
This group contains the skeletons and concept checking classes of LEMON's
klao@1030
   206
graph structures and helper classes used to implement these.
klao@1030
   207
*/
alpar@794
   208
alpar@1587
   209
/* --- Unused group
alpar@678
   210
@defgroup experimental Experimental Structures and Algorithms
alpar@678
   211
This group contains some Experimental structures and algorithms.
alpar@678
   212
The stuff here is subject to change.
alpar@678
   213
*/
alpar@1151
   214
alpar@1558
   215
/**
athos@1582
   216
\anchor demoprograms
athos@1582
   217
alpar@1558
   218
@defgroup demos Demo programs
alpar@1558
   219
alpar@1559
   220
Some demo programs are listed here. Their full source codes can be found in
alpar@1558
   221
the \c demo subdirectory of the source tree.
alpar@1558
   222
ladanyi@1639
   223
The standard compilation procedure (<tt>./configure;make</tt>) will compile
ladanyi@1639
   224
them, as well. 
alpar@1558
   225
alpar@1558
   226
*/
alpar@1558
   227