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