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