doc/groups.dox
author deba
Wed, 21 Feb 2007 13:30:21 +0000
changeset 2376 0ed45a6c74b1
parent 2371 d2a2cb26ecbb
child 2377 83775fab25dc
permissions -rw-r--r--
Reorganization of the modules and groups
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@785
   118
alpar@785
   119
/**
deba@2084
   120
@defgroup algs Algorithms
deba@2084
   121
\brief This group describes the several algorithms
alpar@921
   122
implemented in LEMON.
alpar@947
   123
deba@2084
   124
This group describes the several algorithms
alpar@947
   125
implemented in LEMON.
alpar@947
   126
*/
alpar@947
   127
alpar@947
   128
/**
deba@2376
   129
@defgroup search Graph Search
deba@2084
   130
@ingroup algs
deba@2376
   131
\brief This group contains the common graph
deba@2376
   132
search algorithms.
alpar@947
   133
deba@2376
   134
This group contains the common graph
deba@2376
   135
search algorithms like Bfs and Dfs.
alpar@678
   136
*/
alpar@678
   137
alpar@678
   138
/**
deba@2376
   139
@defgroup shortest_path Shortest Path algorithms
deba@2084
   140
@ingroup algs
alpar@758
   141
\brief This group describes the algorithms
deba@2376
   142
for finding shortest paths.
deba@2060
   143
deba@2376
   144
This group describes the algorithms for finding shortest paths in
deba@2376
   145
graphs.
deba@2376
   146
deba@2376
   147
*/
deba@2376
   148
deba@2376
   149
/** 
deba@2376
   150
@defgroup max_flow Maximum Flow algorithms 
deba@2376
   151
@ingroup algs 
deba@2376
   152
\brief This group describes the algorithms for finding maximum flows.
deba@2376
   153
deba@2376
   154
This group describes the algorithms for finding maximum flows.
deba@2060
   155
deba@2060
   156
\image html flow.png
deba@2060
   157
\image latex flow.eps "Graph flow" width=\textwidth
alpar@678
   158
*/
alpar@678
   159
alpar@678
   160
/**
deba@2376
   161
@defgroup min_cost_flow Minimum Cost Flow algorithms
deba@2376
   162
@ingroup algs
deba@2376
   163
deba@2376
   164
\brief This group describes the algorithms
deba@2376
   165
for finding minimum cost flows and circulations.
deba@2376
   166
deba@2376
   167
This group describes the algorithms for finding minimum cost flows and
deba@2376
   168
circulations.  
deba@2376
   169
*/
deba@2376
   170
deba@2376
   171
/**
deba@2376
   172
@defgroup min_cut Minimum Cut algorithms
deba@2376
   173
@ingroup algs
deba@2376
   174
\brief This group describes the algorithms
deba@2376
   175
for finding minimum cut in graphs.
deba@2376
   176
deba@2376
   177
This group describes the algorithms
deba@2376
   178
for finding minimum cut in graphs.
deba@2376
   179
*/
deba@2376
   180
deba@2376
   181
/**
deba@1750
   182
@defgroup topology Topology related algorithms
deba@2084
   183
@ingroup algs
deba@1750
   184
\brief This group describes the algorithms
deba@1750
   185
for discover the topology of the graphs.
deba@2060
   186
deba@2060
   187
This group describes the algorithms
deba@2060
   188
for discover the topology of the graphs.
deba@2060
   189
deba@2060
   190
\image html edge_biconnected_components.png
deba@2060
   191
\image latex edge_biconnected_components.eps "bi-edge-connected components" width=\textwidth
deba@1750
   192
*/
deba@1750
   193
deba@1750
   194
/**
deba@2376
   195
@defgroup matching Matching algorithms 
deba@2084
   196
@ingroup algs
deba@2042
   197
\brief This group describes the algorithms
deba@2042
   198
for find matchings in graphs and bipartite graphs.
deba@2060
   199
deba@2060
   200
This group provides some algorithm objects and function
deba@2060
   201
to calculate matchings in graphs and bipartite graphs.
deba@2060
   202
deba@2060
   203
\image html bipartite_matching.png
deba@2060
   204
\image latex bipartite_matching.eps "Bipartite Matching" width=\textwidth
deba@2060
   205
deba@2042
   206
*/
deba@2042
   207
deba@2042
   208
/**
deba@2376
   209
@defgroup spantree Minimum Spanning Tree algorithms
deba@2084
   210
@ingroup algs
alpar@2117
   211
\brief This group contains the algorithms for finding a minimum cost spanning
deba@2084
   212
tree in a graph
deba@2084
   213
alpar@2117
   214
This group contains the algorithms for finding a minimum cost spanning
deba@2084
   215
tree in a graph
deba@2084
   216
*/
deba@2084
   217
deba@2084
   218
deba@2084
   219
/**
deba@2376
   220
@defgroup auxalg Auxiliary algorithms
deba@2084
   221
@ingroup algs
deba@2084
   222
\brief Some algorithms implemented in LEMON.
deba@2084
   223
deba@2084
   224
This group describes the algorithms in LEMON in order to make 
deba@2084
   225
it easier to implement complex algorithms.
deba@2376
   226
*/
deba@2084
   227
deba@2376
   228
/**
deba@2376
   229
@defgroup approx Approximation algorithms
deba@2376
   230
\brief Approximation algorithms
deba@2376
   231
deba@2376
   232
Approximation and heuristic algorithms
deba@2084
   233
*/
deba@2084
   234
deba@2084
   235
/**
deba@2084
   236
@defgroup gen_opt_group General Optimization Tools
deba@2084
   237
\brief This group describes some general optimization frameworks
deba@2084
   238
implemented in LEMON.
deba@2084
   239
deba@2084
   240
This group describes some general optimization frameworks
deba@2084
   241
implemented in LEMON.
deba@2084
   242
alpar@1151
   243
*/
alpar@1151
   244
deba@2370
   245
/**
deba@2371
   246
@defgroup lp_group Lp and Mip solvers
deba@2370
   247
@ingroup gen_opt_group
deba@2370
   248
\brief Lp and Mip solver interfaces for LEMON.
deba@2370
   249
deba@2370
   250
This group describes Lp and Mip solver interfaces for LEMON. The
deba@2370
   251
various LP solvers could be used in the same manner with this
deba@2370
   252
interface.
deba@2370
   253
deba@2370
   254
*/
deba@2370
   255
deba@2368
   256
/** 
deba@2370
   257
@defgroup lp_utils Tools for Lp and Mip solvers 
deba@2370
   258
@ingroup lp_group
deba@2370
   259
\brief This group adds some helper tools to the Lp and Mip solvers
deba@2370
   260
implemented in LEMON.
deba@2368
   261
deba@2368
   262
This group adds some helper tools to general optimization framework
deba@2368
   263
implemented in LEMON.
deba@2368
   264
*/
deba@2368
   265
alpar@1151
   266
/**
deba@2370
   267
@defgroup metah Metaheuristics
deba@2370
   268
@ingroup gen_opt_group
deba@2370
   269
\brief Metaheuristics for LEMON library.
deba@2370
   270
deba@2370
   271
This group contains some metaheuristic optimization tools.
deba@2370
   272
*/
deba@2370
   273
deba@2370
   274
/**
deba@2376
   275
@defgroup utils Tools and Utilities 
deba@2376
   276
\brief Tools and Utilities for Programming in LEMON
deba@2376
   277
deba@2376
   278
Tools and Utilities for Programming in LEMON
deba@2376
   279
*/
deba@2376
   280
deba@2376
   281
/**
deba@2376
   282
@defgroup gutils Basic Graph Utilities
deba@2376
   283
@ingroup utils
deba@2376
   284
\brief This group describes some simple basic graph utilities.
deba@2376
   285
deba@2376
   286
This group describes some simple basic graph utilities.
deba@2376
   287
*/
deba@2376
   288
deba@2376
   289
/**
alpar@678
   290
@defgroup misc Miscellaneous Tools
deba@2376
   291
@ingroup utils
alpar@678
   292
Here you can find several useful tools for development,
alpar@678
   293
debugging and testing.
alpar@678
   294
*/
alpar@678
   295
deba@2376
   296
alpar@678
   297
/**
alpar@1847
   298
@defgroup timecount Time measuring and Counting
alpar@1847
   299
@ingroup misc
alpar@1847
   300
Here you can find simple tools for measuring the performance
alpar@1847
   301
of algorithms.
alpar@1847
   302
*/
alpar@1847
   303
alpar@1847
   304
/**
deba@2376
   305
@defgroup graphbits Tools for Graph Implementation
deba@2376
   306
@ingroup utils
deba@2376
   307
\brief Tools to Make It Easier to Make Graphs.
deba@2376
   308
deba@2376
   309
This group describes the tools that makes it easier to make graphs and
deba@2376
   310
the maps that dynamically update with the graph changes.
deba@2376
   311
*/
deba@2376
   312
deba@2376
   313
/**
deba@2376
   314
@defgroup exceptions Exceptions
deba@2376
   315
@ingroup utils
deba@2376
   316
This group contains the exceptions thrown by LEMON library
deba@2376
   317
*/
deba@2376
   318
deba@2376
   319
/**
deba@2016
   320
@defgroup io_group Input-Output
deba@2084
   321
\brief Several Graph Input-Output methods
deba@2084
   322
deba@2084
   323
Here you can find tools for importing and exporting graphs 
deba@2084
   324
and graph related data. Now it supports the LEMON format, the
alpar@2117
   325
\c DIMACS format and the encapsulated postscript format.
deba@2084
   326
*/
deba@2084
   327
deba@2084
   328
/**
deba@2084
   329
@defgroup lemon_io Lemon Input-Output
deba@2084
   330
@ingroup io_group
deba@2084
   331
\brief Reading and writing LEMON format
deba@2084
   332
deba@2084
   333
Methods for reading and writing LEMON format. More about this
deba@2084
   334
format you can find on the \ref graph-io-page "Graph Input-Output"
deba@2084
   335
tutorial pages.
alpar@1287
   336
*/
alpar@1287
   337
alpar@1287
   338
/**
deba@2016
   339
@defgroup section_io Section readers and writers
deba@2084
   340
@ingroup lemon_io
deba@2016
   341
\brief Section readers and writers for lemon Input-Output.
deba@2016
   342
deba@2016
   343
Here you can find which section readers and writers can attach to
deba@2016
   344
the LemonReader and LemonWriter.
deba@2016
   345
*/
deba@2016
   346
deba@2016
   347
/**
deba@2016
   348
@defgroup item_io Item Readers and Writers
deba@2084
   349
@ingroup lemon_io
deba@2016
   350
\brief Item readers and writers for lemon Input-Output.
deba@2016
   351
deba@2016
   352
The Input-Output classes can handle more data type by example
deba@2016
   353
as map or attribute value. Each of these should be written and
deba@2016
   354
read some way. The module make possible to do this.  
deba@2016
   355
*/
deba@2016
   356
deba@2016
   357
/**
deba@2084
   358
@defgroup eps_io Postscript exporting
deba@2084
   359
@ingroup io_group
alpar@2117
   360
\brief General \c EPS drawer and graph exporter
deba@2084
   361
alpar@2117
   362
This group contains general \c EPS drawing methods and special
deba@2084
   363
graph exporting tools. 
deba@2084
   364
*/
deba@2084
   365
deba@2084
   366
deba@2084
   367
/**
klao@1030
   368
@defgroup concept Concepts
klao@959
   369
\brief Skeleton classes and concept checking classes
alpar@794
   370
klao@959
   371
This group describes the data/algorithm skeletons and concept checking
klao@1030
   372
classes implemented in LEMON.
klao@1030
   373
alpar@2117
   374
The purpose of the classes in this group is fourfold.
alpar@2117
   375
 
alpar@2117
   376
- These classes contain the documentations of the concepts. In order
alpar@2117
   377
  to avoid document multiplications, an implementation of a concept
alpar@2117
   378
  simply refers to the corresponding concept class.
klao@1030
   379
alpar@2233
   380
- These classes declare every functions, <tt>typedef</tt>s etc. an
alpar@2117
   381
  implementation of the concepts should provide, however completely
alpar@2117
   382
  without implementations and real data structures behind the
alpar@2117
   383
  interface. On the other hand they should provide nothing else. All
alpar@2117
   384
  the algorithms working on a data structure meeting a certain concept
alpar@2117
   385
  should compile with these classes. (Though it will not run properly,
alpar@2117
   386
  of course.) In this way it is easily to check if an algorithm
alpar@2117
   387
  doesn't use any extra feature of a certain implementation.
alpar@2117
   388
alpar@2233
   389
- The concept descriptor classes also provide a <em>checker class</em>
alpar@2117
   390
  that makes it possible check whether a certain implementation of a
alpar@2117
   391
  concept indeed provides all the required features.
alpar@2117
   392
alpar@2117
   393
- Finally, They can serve as a skeleton of a new implementation of a concept.
klao@1030
   394
alpar@794
   395
*/
alpar@794
   396
deba@2084
   397
klao@1030
   398
/**
klao@1030
   399
@defgroup graph_concepts Graph Structure Concepts
klao@1030
   400
@ingroup concept
klao@1030
   401
\brief Skeleton and concept checking classes for graph structures
klao@1030
   402
klao@1030
   403
This group contains the skeletons and concept checking classes of LEMON's
klao@1030
   404
graph structures and helper classes used to implement these.
klao@1030
   405
*/
alpar@794
   406
alpar@1587
   407
/* --- Unused group
alpar@678
   408
@defgroup experimental Experimental Structures and Algorithms
alpar@678
   409
This group contains some Experimental structures and algorithms.
alpar@678
   410
The stuff here is subject to change.
alpar@678
   411
*/
alpar@1151
   412
alpar@1558
   413
/**
athos@1582
   414
\anchor demoprograms
athos@1582
   415
alpar@1558
   416
@defgroup demos Demo programs
alpar@1558
   417
alpar@1559
   418
Some demo programs are listed here. Their full source codes can be found in
alpar@1558
   419
the \c demo subdirectory of the source tree.
alpar@1558
   420
ladanyi@1639
   421
The standard compilation procedure (<tt>./configure;make</tt>) will compile
ladanyi@1639
   422
them, as well. 
alpar@1558
   423
alpar@1558
   424
*/
alpar@1558
   425