doc/groups.dox
changeset 2106 de35c0232651
parent 2072 224d3781b00b
child 2117 96efb4fa0736
equal deleted inserted replaced
38:4fa276dc83fd 39:033291624de2
    12 The implementation of combinatorial algorithms heavily relies on 
    12 The implementation of combinatorial algorithms heavily relies on 
    13 efficient graph implementations. LEMON offers data structures which are 
    13 efficient graph implementations. LEMON offers data structures which are 
    14 planned to be easily used in an experimental phase of implementation studies, 
    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. 
    15 and thereafter the program code can be made efficient by small modifications. 
    16 
    16 
    17 The most efficient implementation of diverse applications require the usage of different physical graph implementations. These differences appear in the size of 
    17 The most efficient implementation of diverse applications require the
    18 graph we require to handle, memory or time usage limitations or in 
    18 usage of different physical graph implementations. These differences
    19 the set of operations through which the graph can be accessed. 
    19 appear in the size of graph we require to handle, memory or time usage
    20 LEMON provides several physical graph structures to meet the 
    20 limitations or in the set of operations through which the graph can be
    21 diverging requirements of the possible users. 
    21 accessed.  LEMON provides several physical graph structures to meet
    22 In order to save on running time or on memory usage, some structures may 
    22 the diverging requirements of the possible users.  In order to save on
    23 fail to provide some graph features like edge or node deletion.
    23 running time or on memory usage, some structures may fail to provide
       
    24 some graph features like edge or node deletion.
    24 
    25 
    25 Alteration of standard containers need a very limited number of 
    26 Alteration of standard containers need a very limited number of 
    26 operations, these together satisfy the everyday requirements. 
    27 operations, these together satisfy the everyday requirements. 
    27 In the case of graph strutures, different operations are needed which do 
    28 In the case of graph strutures, different operations are needed which do 
    28 not alter the physical graph, but gives another view. If some nodes or 
    29 not alter the physical graph, but gives another view. If some nodes or 
    74 \brief Tools to create new maps from existing ones
    75 \brief Tools to create new maps from existing ones
    75 
    76 
    76 Map adaptors are used to create "implicit" maps from other maps.
    77 Map adaptors are used to create "implicit" maps from other maps.
    77 
    78 
    78 Most of them are \ref lemon::concept::ReadMap "ReadMap"s. They can
    79 Most of them are \ref lemon::concept::ReadMap "ReadMap"s. They can
    79 make arithmetic oprerations between one or two maps (negation, scalig,
    80 make arithmetic oprerations between one or two maps (negation, scaling,
    80 addition, multiplication etc.) or e.g. convert a map to another one
    81 addition, multiplication etc.) or e.g. convert a map to another one
    81 of different Value type.
    82 of different Value type.
    82 */
    83 */
    83 
    84 
    84 /**
    85 /**
    85 @defgroup matrices Matrices 
    86 @defgroup matrices Matrices 
    86 @ingroup datas
    87 @ingroup datas
    87 \brief Two dimensional data storages.
    88 \brief Two dimensional data storages.
    88 
    89 
    89 Two dimensional
    90 Two dimensional data storages.
    90 data storages.
    91 */
    91 */
    92 
    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::concept::Path
       
   106 
       
   107 */
    93 
   108 
    94 /**
   109 /**
    95 @defgroup auxdat Auxiliary Data Structures
   110 @defgroup auxdat Auxiliary Data Structures
    96 @ingroup datas
   111 @ingroup datas
    97 \brief Some data structures implemented in LEMON.
   112 \brief Some data structures implemented in LEMON.
   108 This group describes the tools that makes it easier to make graphs and
   123 This group describes the tools that makes it easier to make graphs and
   109 the maps that dynamically update with the graph changes.
   124 the maps that dynamically update with the graph changes.
   110 */
   125 */
   111 
   126 
   112 /**
   127 /**
   113 @defgroup galgs Graph Algorithms
   128 @defgroup algs Algorithms
   114 \brief This group describes the several graph algorithms
   129 \brief This group describes the several algorithms
   115 implemented in LEMON.
   130 implemented in LEMON.
   116 
   131 
   117 This group describes the several graph algorithms
   132 This group describes the several algorithms
   118 implemented in LEMON.
   133 implemented in LEMON.
   119 */
   134 */
   120 
   135 
   121 /**
   136 /**
   122 @defgroup gutils General Graph Utilities
   137 @defgroup gutils General Graph Utilities
   123 @ingroup galgs
   138 @ingroup algs
   124 \brief This group describes some simple general graph utilities.
   139 \brief This group describes some simple general graph utilities.
   125 
   140 
   126 This group describes some simple general graph utilities.
   141 This group describes some simple general graph utilities.
       
   142 */
       
   143 
       
   144 /**
       
   145 @defgroup flowalgs Path and Flow Algorithms
       
   146 @ingroup algs
       
   147 \brief This group describes the algorithms
       
   148 for finding paths and flows in graphs.
       
   149 
       
   150 This group describes the algorithms
       
   151 for finding paths and flows in graphs.
       
   152 
       
   153 \image html flow.png
       
   154 \image latex flow.eps "Graph flow" width=\textwidth
       
   155 */
       
   156 
       
   157 /**
       
   158 @defgroup topology Topology related algorithms
       
   159 @ingroup algs
       
   160 \brief This group describes the algorithms
       
   161 for discover the topology of the graphs.
       
   162 
       
   163 This group describes the algorithms
       
   164 for discover the topology of the graphs.
       
   165 
       
   166 \image html edge_biconnected_components.png
       
   167 \image latex edge_biconnected_components.eps "bi-edge-connected components" width=\textwidth
       
   168 
       
   169 */
       
   170 
       
   171 /**
       
   172 @defgroup matching Matching algorithms in graphs and bipartite graphs
       
   173 @ingroup algs
       
   174 \brief This group describes the algorithms
       
   175 for find matchings in graphs and bipartite graphs.
       
   176 
       
   177 This group provides some algorithm objects and function
       
   178 to calculate matchings in graphs and bipartite graphs.
       
   179 
       
   180 \image html bipartite_matching.png
       
   181 \image latex bipartite_matching.eps "Bipartite Matching" width=\textwidth
       
   182 
       
   183 */
       
   184 
       
   185 /**
       
   186 @defgroup spantree Minimum Cost Spanning Tree Algorithms
       
   187 @ingroup algs
       
   188 \brief This group containes the algorithms for finding a minimum cost spanning
       
   189 tree in a graph
       
   190 
       
   191 This group containes the algorithms for finding a minimum cost spanning
       
   192 tree in a graph
       
   193 */
       
   194 
       
   195 
       
   196 /**
       
   197 @defgroup auxalg Auxiliary Algorithms
       
   198 @ingroup algs
       
   199 \brief Some algorithms implemented in LEMON.
       
   200 
       
   201 This group describes the algorithms in LEMON in order to make 
       
   202 it easier to implement complex algorithms.
       
   203 
   127 */
   204 */
   128 
   205 
   129 /**
   206 /**
   130 @defgroup gen_opt_group General Optimization Tools
   207 @defgroup gen_opt_group General Optimization Tools
   131 \brief This group describes some general optimization frameworks
   208 \brief This group describes some general optimization frameworks
   132 implemented in LEMON.
   209 implemented in LEMON.
   133 
   210 
   134 This group describes some general optimization frameworks
   211 This group describes some general optimization frameworks
   135 implemented in LEMON.
   212 implemented in LEMON.
   136 
   213 
   137 */
       
   138 
       
   139 /**
       
   140 @defgroup flowalgs Path and Flow Algorithms
       
   141 @ingroup galgs
       
   142 \brief This group describes the algorithms
       
   143 for finding paths and flows in graphs.
       
   144 
       
   145 This group describes the algorithms
       
   146 for finding paths and flows in graphs.
       
   147 
       
   148 \image html flow.png
       
   149 \image latex flow.eps "Graph flow" width=\textwidth
       
   150 */
       
   151 
       
   152 /**
       
   153 @defgroup topology Topology related algorithms
       
   154 @ingroup galgs
       
   155 \brief This group describes the algorithms
       
   156 for discover the topology of the graphs.
       
   157 
       
   158 This group describes the algorithms
       
   159 for discover the topology of the graphs.
       
   160 
       
   161 \image html edge_biconnected_components.png
       
   162 \image latex edge_biconnected_components.eps "bi-edge-connected components" width=\textwidth
       
   163 
       
   164 */
       
   165 
       
   166 /**
       
   167 @defgroup matching Matching algorithms in graphs and bipartite graphs
       
   168 @ingroup galgs
       
   169 \brief This group describes the algorithms
       
   170 for find matchings in graphs and bipartite graphs.
       
   171 
       
   172 This group provides some algorithm objects and function
       
   173 to calculate matchings in graphs and bipartite graphs.
       
   174 
       
   175 \image html bipartite_matching.png
       
   176 \image latex bipartite_matching.eps "Bipartite Matching" width=\textwidth
       
   177 
       
   178 */
       
   179 
       
   180 /**
       
   181 @defgroup exceptions Exceptions
       
   182 This group contains the exceptions thrown by LEMON library
       
   183 */
   214 */
   184 
   215 
   185 /**
   216 /**
   186 @defgroup misc Miscellaneous Tools
   217 @defgroup misc Miscellaneous Tools
   187 Here you can find several useful tools for development,
   218 Here you can find several useful tools for development,
   195 of algorithms.
   226 of algorithms.
   196 */
   227 */
   197 
   228 
   198 /**
   229 /**
   199 @defgroup io_group Input-Output
   230 @defgroup io_group Input-Output
   200 Here you can find tools for imporing and exporting graphs and graph related
   231 \brief Several Graph Input-Output methods
   201 data
   232 
       
   233 Here you can find tools for importing and exporting graphs 
       
   234 and graph related data. Now it supports the LEMON format, the
       
   235 dimacs format and the encapsulated postscript format.
       
   236 */
       
   237 
       
   238 /**
       
   239 @defgroup lemon_io Lemon Input-Output
       
   240 @ingroup io_group
       
   241 \brief Reading and writing LEMON format
       
   242 
       
   243 Methods for reading and writing LEMON format. More about this
       
   244 format you can find on the \ref graph-io-page "Graph Input-Output"
       
   245 tutorial pages.
       
   246 
   202 */
   247 */
   203 
   248 
   204 /**
   249 /**
   205 @defgroup section_io Section readers and writers
   250 @defgroup section_io Section readers and writers
   206 @ingroup io_group
   251 @ingroup lemon_io
   207 \brief Section readers and writers for lemon Input-Output.
   252 \brief Section readers and writers for lemon Input-Output.
   208 
   253 
   209 Here you can find which section readers and writers can attach to
   254 Here you can find which section readers and writers can attach to
   210 the LemonReader and LemonWriter.
   255 the LemonReader and LemonWriter.
   211 */
   256 */
   212 
   257 
   213 /**
   258 /**
   214 @defgroup item_io Item Readers and Writers
   259 @defgroup item_io Item Readers and Writers
   215 @ingroup io_group
   260 @ingroup lemon_io
   216 \brief Item readers and writers for lemon Input-Output.
   261 \brief Item readers and writers for lemon Input-Output.
   217 
   262 
   218 The Input-Output classes can handle more data type by example
   263 The Input-Output classes can handle more data type by example
   219 as map or attribute value. Each of these should be written and
   264 as map or attribute value. Each of these should be written and
   220 read some way. The module make possible to do this.  
   265 read some way. The module make possible to do this.  
   221 */
   266 */
   222 
   267 
   223 /**
   268 /**
       
   269 @defgroup eps_io Postscript exporting
       
   270 @ingroup io_group
       
   271 \brief General EPS drawer and graph exporter
       
   272 
       
   273 This group contains general EPS drawing methods and special
       
   274 graph exporting tools. 
       
   275 */
       
   276 
       
   277 /**
       
   278 @defgroup exceptions Exceptions
       
   279 This group contains the exceptions thrown by LEMON library
       
   280 */
       
   281 
       
   282 /**
   224 @defgroup concept Concepts
   283 @defgroup concept Concepts
   225 \brief Skeleton classes and concept checking classes
   284 \brief Skeleton classes and concept checking classes
   226 
   285 
   227 This group describes the data/algorithm skeletons and concept checking
   286 This group describes the data/algorithm skeletons and concept checking
   228 classes implemented in LEMON.
   287 classes implemented in LEMON.
   231 class or template function is correctly implemented.
   290 class or template function is correctly implemented.
   232 
   291 
   233 The other (sometimes even more important) aim is to document the concepts.
   292 The other (sometimes even more important) aim is to document the concepts.
   234 
   293 
   235 */
   294 */
       
   295 
   236 
   296 
   237 /**
   297 /**
   238 @defgroup graph_concepts Graph Structure Concepts
   298 @defgroup graph_concepts Graph Structure Concepts
   239 @ingroup concept
   299 @ingroup concept
   240 \brief Skeleton and concept checking classes for graph structures
   300 \brief Skeleton and concept checking classes for graph structures