1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/doc/coding_style.dox Mon Jan 07 19:22:09 2008 +0100
1.3 @@ -0,0 +1,118 @@
1.4 +/* -*- C++ -*-
1.5 + *
1.6 + * This file is a part of LEMON, a generic C++ optimization library
1.7 + *
1.8 + * Copyright (C) 2003-2008
1.9 + * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
1.10 + * (Egervary Research Group on Combinatorial Optimization, EGRES).
1.11 + *
1.12 + * Permission to use, modify and distribute this software is granted
1.13 + * provided that this copyright notice appears in all copies. For
1.14 + * precise terms see the accompanying LICENSE file.
1.15 + *
1.16 + * This software is provided "AS IS" with no warranty of any kind,
1.17 + * express or implied, and with no claim as to its suitability for any
1.18 + * purpose.
1.19 + *
1.20 + */
1.21 +
1.22 +/*!
1.23 +
1.24 +\page coding_style LEMON Coding Style
1.25 +
1.26 +\section naming_conv Naming Conventions
1.27 +
1.28 +In order to make development easier we have made some conventions
1.29 +according to coding style. These include names of types, classes,
1.30 +functions, variables, constants and exceptions. If these conventions
1.31 +are met in one's code then it is easier to read and maintain
1.32 +it. Please comply with these conventions if you want to contribute
1.33 +developing LEMON library.
1.34 +
1.35 +\note When the coding style requires the capitalization of an abbreviation,
1.36 +only the first letter should be upper case.
1.37 +
1.38 +\code
1.39 +XmlReader
1.40 +\endcode
1.41 +
1.42 +
1.43 +\warning In some cases we diverge from these rules.
1.44 +This primary done because STL uses different naming convention and
1.45 +in certain cases
1.46 +it is beneficial to provide STL compatible interface.
1.47 +
1.48 +\subsection cs-files File Names
1.49 +
1.50 +The header file names should look like the following.
1.51 +
1.52 +\code
1.53 +header_file.h
1.54 +\endcode
1.55 +
1.56 +Note that all standard LEMON headers are located in the \c lemon subdirectory,
1.57 +so you should include them from C++ source like this:
1.58 +
1.59 +\code
1.60 +#include <lemon/header_file.h>
1.61 +\endcode
1.62 +
1.63 +The source code files use the same style and they have '.cc' extension.
1.64 +
1.65 +\code
1.66 +source_code.cc
1.67 +\endcode
1.68 +
1.69 +\subsection cs-class Classes and other types
1.70 +
1.71 +The name of a class or any type should look like the following.
1.72 +
1.73 +\code
1.74 +AllWordsCapitalizedWithoutUnderscores
1.75 +\endcode
1.76 +
1.77 +\subsection cs-func Methods and other functions
1.78 +
1.79 +The name of a function should look like the following.
1.80 +
1.81 +\code
1.82 +firstWordLowerCaseRestCapitalizedWithoutUnderscores
1.83 +\endcode
1.84 +
1.85 +\subsection cs-funcs Constants, Macros
1.86 +
1.87 +The names of constants and macros should look like the following.
1.88 +
1.89 +\code
1.90 +ALL_UPPER_CASE_WITH_UNDERSCORES
1.91 +\endcode
1.92 +
1.93 +\subsection cs-loc-var Class and instance member variables, auto variables
1.94 +
1.95 +The names of class and instance member variables and auto variables (=variables used locally in methods) should look like the following.
1.96 +
1.97 +\code
1.98 +all_lower_case_with_underscores
1.99 +\endcode
1.100 +
1.101 +\subsection cs-excep Exceptions
1.102 +
1.103 +When writing exceptions please comply the following naming conventions.
1.104 +
1.105 +\code
1.106 +ClassNameEndsWithException
1.107 +\endcode
1.108 +
1.109 +or
1.110 +
1.111 +\code
1.112 +ClassNameEndsWithError
1.113 +\endcode
1.114 +
1.115 +\section header-template Template Header File
1.116 +
1.117 +Each LEMON header file should look like this:
1.118 +
1.119 +\include template.h
1.120 +
1.121 +*/
2.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
2.2 +++ b/doc/dirs.dox Mon Jan 07 19:22:09 2008 +0100
2.3 @@ -0,0 +1,79 @@
2.4 +/* -*- C++ -*-
2.5 + *
2.6 + * This file is a part of LEMON, a generic C++ optimization library
2.7 + *
2.8 + * Copyright (C) 2003-2008
2.9 + * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
2.10 + * (Egervary Research Group on Combinatorial Optimization, EGRES).
2.11 + *
2.12 + * Permission to use, modify and distribute this software is granted
2.13 + * provided that this copyright notice appears in all copies. For
2.14 + * precise terms see the accompanying LICENSE file.
2.15 + *
2.16 + * This software is provided "AS IS" with no warranty of any kind,
2.17 + * express or implied, and with no claim as to its suitability for any
2.18 + * purpose.
2.19 + *
2.20 + */
2.21 +
2.22 +/**
2.23 +\dir demo
2.24 +\brief A collection of demo application.
2.25 +
2.26 +This directory contains several simple demo application, mainly
2.27 +for educational purposes.
2.28 +*/
2.29 +
2.30 +/**
2.31 +\dir doc
2.32 +\brief Auxiliary (and the whole generated) documentation.
2.33 +
2.34 +Auxiliary (and the whole generated) documentation.
2.35 +*/
2.36 +
2.37 +/**
2.38 +\dir test
2.39 +\brief Test programs.
2.40 +
2.41 +This directory contains several test programs that check the consistency
2.42 +of the code.
2.43 +*/
2.44 +
2.45 +/**
2.46 +\dir tools
2.47 +\brief Some useful executables
2.48 +
2.49 +This directory contains the sources of some useful complete executables.
2.50 +
2.51 +*/
2.52 +
2.53 +
2.54 +
2.55 +/**
2.56 +\dir lemon
2.57 +\brief Base include directory of LEMON
2.58 +
2.59 +This is the base directory of lemon includes, so each include file must be
2.60 +prefixed with this, e.g.
2.61 +\code
2.62 +#include<lemon/list_graph.h>
2.63 +#include<lemon/dijkstra.h>
2.64 +\endcode
2.65 +*/
2.66 +
2.67 +/**
2.68 +\dir concepts
2.69 +\brief Concept descriptors and checking classes
2.70 +
2.71 +This directory contains the concept descriptors and concept checkers. As a user
2.72 +you typically don't have to deal with these files.
2.73 +*/
2.74 +
2.75 +/**
2.76 +\dir bits
2.77 +\brief Implementation helper files
2.78 +
2.79 +This directory contains some helper classes to implement graphs, maps and
2.80 +some other classes. As a user you typically don't have to deal with these
2.81 +files.
2.82 +*/
3.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2 +++ b/doc/groups.dox Mon Jan 07 19:22:09 2008 +0100
3.3 @@ -0,0 +1,585 @@
3.4 +/* -*- C++ -*-
3.5 + *
3.6 + * This file is a part of LEMON, a generic C++ optimization library
3.7 + *
3.8 + * Copyright (C) 2003-2008
3.9 + * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
3.10 + * (Egervary Research Group on Combinatorial Optimization, EGRES).
3.11 + *
3.12 + * Permission to use, modify and distribute this software is granted
3.13 + * provided that this copyright notice appears in all copies. For
3.14 + * precise terms see the accompanying LICENSE file.
3.15 + *
3.16 + * This software is provided "AS IS" with no warranty of any kind,
3.17 + * express or implied, and with no claim as to its suitability for any
3.18 + * purpose.
3.19 + *
3.20 + */
3.21 +
3.22 +/**
3.23 +@defgroup datas Data Structures
3.24 +This group describes the several graph structures implemented in LEMON.
3.25 +*/
3.26 +
3.27 +/**
3.28 +@defgroup graphs Graph Structures
3.29 +@ingroup datas
3.30 +\brief Graph structures implemented in LEMON.
3.31 +
3.32 +The implementation of combinatorial algorithms heavily relies on
3.33 +efficient graph implementations. LEMON offers data structures which are
3.34 +planned to be easily used in an experimental phase of implementation studies,
3.35 +and thereafter the program code can be made efficient by small modifications.
3.36 +
3.37 +The most efficient implementation of diverse applications require the
3.38 +usage of different physical graph implementations. These differences
3.39 +appear in the size of graph we require to handle, memory or time usage
3.40 +limitations or in the set of operations through which the graph can be
3.41 +accessed. LEMON provides several physical graph structures to meet
3.42 +the diverging requirements of the possible users. In order to save on
3.43 +running time or on memory usage, some structures may fail to provide
3.44 +some graph features like edge or node deletion.
3.45 +
3.46 +Alteration of standard containers need a very limited number of
3.47 +operations, these together satisfy the everyday requirements.
3.48 +In the case of graph structures, different operations are needed which do
3.49 +not alter the physical graph, but gives another view. If some nodes or
3.50 +edges have to be hidden or the reverse oriented graph have to be used, then
3.51 +this is the case. It also may happen that in a flow implementation
3.52 +the residual graph can be accessed by another algorithm, or a node-set
3.53 +is to be shrunk for another algorithm.
3.54 +LEMON also provides a variety of graphs for these requirements called
3.55 +\ref graph_adaptors "graph adaptors". Adaptors cannot be used alone but only
3.56 +in conjunction with other graph representation.
3.57 +
3.58 +You are free to use the graph structure that fit your requirements
3.59 +the best, most graph algorithms and auxiliary data structures can be used
3.60 +with any graph structures.
3.61 +*/
3.62 +
3.63 +/**
3.64 +@defgroup semi_adaptors Semi-Adaptors Classes for Graphs
3.65 +@ingroup graphs
3.66 +\brief Graph types between real graphs and graph adaptors.
3.67 +
3.68 +Graph types between real graphs and graph adaptors. These classes wrap
3.69 +graphs to give new functionality as the adaptors do it. On the other
3.70 +hand they are not light-weight structures as the adaptors.
3.71 +*/
3.72 +
3.73 +/**
3.74 +@defgroup maps Maps
3.75 +@ingroup datas
3.76 +\brief Some special purpose map to make life easier.
3.77 +
3.78 +LEMON provides several special maps that e.g. combine
3.79 +new maps from existing ones.
3.80 +*/
3.81 +
3.82 +/**
3.83 +@defgroup graph_maps Graph Maps
3.84 +@ingroup maps
3.85 +\brief Special Graph-Related Maps.
3.86 +
3.87 +These maps are specifically designed to assign values to the nodes and edges of
3.88 +graphs.
3.89 +*/
3.90 +
3.91 +
3.92 +/**
3.93 +\defgroup map_adaptors Map Adaptors
3.94 +\ingroup maps
3.95 +\brief Tools to create new maps from existing ones
3.96 +
3.97 +Map adaptors are used to create "implicit" maps from other maps.
3.98 +
3.99 +Most of them are \ref lemon::concepts::ReadMap "ReadMap"s. They can
3.100 +make arithmetic operations between one or two maps (negation, scaling,
3.101 +addition, multiplication etc.) or e.g. convert a map to another one
3.102 +of different Value type.
3.103 +
3.104 +The typical usage of this classes is the passing implicit maps to
3.105 +algorithms. If a function type algorithm is called then the function
3.106 +type map adaptors can be used comfortable. For example let's see the
3.107 +usage of map adaptors with the \c graphToEps() function:
3.108 +\code
3.109 + Color nodeColor(int deg) {
3.110 + if (deg >= 2) {
3.111 + return Color(0.5, 0.0, 0.5);
3.112 + } else if (deg == 1) {
3.113 + return Color(1.0, 0.5, 1.0);
3.114 + } else {
3.115 + return Color(0.0, 0.0, 0.0);
3.116 + }
3.117 + }
3.118 +
3.119 + Graph::NodeMap<int> degree_map(graph);
3.120 +
3.121 + graphToEps(graph, "graph.eps")
3.122 + .coords(coords).scaleToA4().undirected()
3.123 + .nodeColors(composeMap(functorMap(nodeColor), degree_map))
3.124 + .run();
3.125 +\endcode
3.126 +The \c functorMap() function makes an \c int to \c Color map from the
3.127 +\e nodeColor() function. The \c composeMap() compose the \e degree_map
3.128 +and the previous created map. The composed map is proper function to
3.129 +get color of each node.
3.130 +
3.131 +The usage with class type algorithms is little bit harder. In this
3.132 +case the function type map adaptors can not be used, because the
3.133 +function map adaptors give back temporarly objects.
3.134 +\code
3.135 + Graph graph;
3.136 +
3.137 + typedef Graph::EdgeMap<double> DoubleEdgeMap;
3.138 + DoubleEdgeMap length(graph);
3.139 + DoubleEdgeMap speed(graph);
3.140 +
3.141 + typedef DivMap<DoubleEdgeMap, DoubleEdgeMap> TimeMap;
3.142 +
3.143 + TimeMap time(length, speed);
3.144 +
3.145 + Dijkstra<Graph, TimeMap> dijkstra(graph, time);
3.146 + dijkstra.run(source, target);
3.147 +\endcode
3.148 +
3.149 +We have a length map and a maximum speed map on a graph. The minimum
3.150 +time to pass the edge can be calculated as the division of the two
3.151 +maps which can be done implicitly with the \c DivMap template
3.152 +class. We use the implicit minimum time map as the length map of the
3.153 +\c Dijkstra algorithm.
3.154 +*/
3.155 +
3.156 +/**
3.157 +@defgroup matrices Matrices
3.158 +@ingroup datas
3.159 +\brief Two dimensional data storages.
3.160 +
3.161 +Two dimensional data storages.
3.162 +*/
3.163 +
3.164 +/**
3.165 +@defgroup paths Path Structures
3.166 +@ingroup datas
3.167 +\brief Path structures implemented in LEMON.
3.168 +
3.169 +LEMON provides flexible data structures
3.170 +to work with paths.
3.171 +
3.172 +All of them have similar interfaces, and it can be copied easily with
3.173 +assignment operator and copy constructor. This make it easy and
3.174 +efficient to have e.g. the Dijkstra algorithm to store its result in
3.175 +any kind of path structure.
3.176 +
3.177 +\sa lemon::concepts::Path
3.178 +
3.179 +*/
3.180 +
3.181 +/**
3.182 +@defgroup auxdat Auxiliary Data Structures
3.183 +@ingroup datas
3.184 +\brief Some data structures implemented in LEMON.
3.185 +
3.186 +This group describes the data structures implemented in LEMON in
3.187 +order to make it easier to implement combinatorial algorithms.
3.188 +*/
3.189 +
3.190 +
3.191 +/**
3.192 +@defgroup algs Algorithms
3.193 +\brief This group describes the several algorithms
3.194 +implemented in LEMON.
3.195 +
3.196 +This group describes the several algorithms
3.197 +implemented in LEMON.
3.198 +*/
3.199 +
3.200 +/**
3.201 +@defgroup search Graph Search
3.202 +@ingroup algs
3.203 +\brief This group contains the common graph
3.204 +search algorithms.
3.205 +
3.206 +This group contains the common graph
3.207 +search algorithms like Bfs and Dfs.
3.208 +*/
3.209 +
3.210 +/**
3.211 +@defgroup shortest_path Shortest Path algorithms
3.212 +@ingroup algs
3.213 +\brief This group describes the algorithms
3.214 +for finding shortest paths.
3.215 +
3.216 +This group describes the algorithms for finding shortest paths in
3.217 +graphs.
3.218 +
3.219 +*/
3.220 +
3.221 +/**
3.222 +@defgroup max_flow Maximum Flow algorithms
3.223 +@ingroup algs
3.224 +\brief This group describes the algorithms for finding maximum flows.
3.225 +
3.226 +This group describes the algorithms for finding maximum flows and
3.227 +feasible circulations.
3.228 +
3.229 +The maximum flow problem is to find a flow between a single-source and
3.230 +single-target that is maximum. Formally, there is \f$G=(V,A)\f$
3.231 +directed graph, an \f$c_a:A\rightarrow\mathbf{R}^+_0\f$ capacity
3.232 +function and given \f$s, t \in V\f$ source and target node. The
3.233 +maximum flow is the solution of the next optimization problem:
3.234 +
3.235 +\f[ 0 \le f_a \le c_a \f]
3.236 +\f[ \sum_{v\in\delta^{-}(u)}f_{vu}=\sum_{v\in\delta^{+}(u)}f_{uv} \quad u \in V \setminus \{s,t\}\f]
3.237 +\f[ \max \sum_{v\in\delta^{+}(s)}f_{uv} - \sum_{v\in\delta^{-}(s)}f_{vu}\f]
3.238 +
3.239 +The lemon contains several algorithms for solve maximum flow problems:
3.240 +- \ref lemon::EdmondsKarp "Edmonds-Karp"
3.241 +- \ref lemon::Preflow "Goldberg's Preflow algorithm"
3.242 +- \ref lemon::DinitzSleatorTarjan "Dinitz's blocking flow algorithm with dynamic tree"
3.243 +- \ref lemon::GoldbergTarjan "Preflow algorithm with dynamic trees"
3.244 +
3.245 +In most cases the \ref lemon::Preflow "preflow" algorithm provides the
3.246 +fastest method to compute the maximum flow. All impelementations
3.247 +provides functions for query the minimum cut, which is the dual linear
3.248 +programming probelm of the maximum flow.
3.249 +
3.250 +*/
3.251 +
3.252 +/**
3.253 +@defgroup min_cost_flow Minimum Cost Flow algorithms
3.254 +@ingroup algs
3.255 +
3.256 +\brief This group describes the algorithms
3.257 +for finding minimum cost flows and circulations.
3.258 +
3.259 +This group describes the algorithms for finding minimum cost flows and
3.260 +circulations.
3.261 +*/
3.262 +
3.263 +/**
3.264 +@defgroup min_cut Minimum Cut algorithms
3.265 +@ingroup algs
3.266 +
3.267 +\brief This group describes the algorithms for finding minimum cut in
3.268 +graphs.
3.269 +
3.270 +This group describes the algorithms for finding minimum cut in graphs.
3.271 +
3.272 +The minimum cut problem is to find a non-empty and non-complete
3.273 +\f$X\f$ subset of the vertices with minimum overall capacity on
3.274 +outgoing arcs. Formally, there is \f$G=(V,A)\f$ directed graph, an
3.275 +\f$c_a:A\rightarrow\mathbf{R}^+_0\f$ capacity function. The minimum
3.276 +cut is the solution of the next optimization problem:
3.277 +
3.278 +\f[ \min_{X \subset V, X\not\in \{\emptyset, V\}}\sum_{uv\in A, u\in X, v\not\in X}c_{uv}\f]
3.279 +
3.280 +The lemon contains several algorithms related to minimum cut problems:
3.281 +
3.282 +- \ref lemon::HaoOrlin "Hao-Orlin algorithm" for calculate minimum cut
3.283 + in directed graphs
3.284 +- \ref lemon::NagamochiIbaraki "Nagamochi-Ibaraki algorithm" for
3.285 + calculate minimum cut in undirected graphs
3.286 +- \ref lemon::GomoryHuTree "Gomory-Hu tree computation" for calculate all
3.287 + pairs minimum cut in undirected graphs
3.288 +
3.289 +If you want to find minimum cut just between two distinict nodes,
3.290 +please see the \ref max_flow "Maximum Flow page".
3.291 +
3.292 +*/
3.293 +
3.294 +/**
3.295 +@defgroup graph_prop Connectivity and other graph properties
3.296 +@ingroup algs
3.297 +\brief This group describes the algorithms
3.298 +for discover the graph properties
3.299 +
3.300 +This group describes the algorithms for discover the graph properties
3.301 +like connectivity, bipartiteness, euler property, simplicity, etc...
3.302 +
3.303 +\image html edge_biconnected_components.png
3.304 +\image latex edge_biconnected_components.eps "bi-edge-connected components" width=\textwidth
3.305 +*/
3.306 +
3.307 +/**
3.308 +@defgroup planar Planarity embedding and drawing
3.309 +@ingroup algs
3.310 +\brief This group contains algorithms for planarity embedding and drawing
3.311 +
3.312 +This group contains algorithms for planarity checking, embedding and drawing.
3.313 +
3.314 +\image html planar.png
3.315 +\image latex planar.eps "Plane graph" width=\textwidth
3.316 +*/
3.317 +
3.318 +/**
3.319 +@defgroup matching Matching algorithms
3.320 +@ingroup algs
3.321 +\brief This group describes the algorithms
3.322 +for find matchings in graphs and bipartite graphs.
3.323 +
3.324 +This group provides some algorithm objects and function to calculate
3.325 +matchings in graphs and bipartite graphs. The general matching problem is
3.326 +finding a subset of the edges which does not shares common endpoints.
3.327 +
3.328 +There are several different algorithms for calculate matchings in
3.329 +graphs. The matching problems in bipartite graphs are generally
3.330 +easier than in general graphs. The goal of the matching optimization
3.331 +can be the finding maximum cardinality, maximum weight or minimum cost
3.332 +matching. The search can be constrained to find perfect or
3.333 +maximum cardinality matching.
3.334 +
3.335 +Lemon contains the next algorithms:
3.336 +- \ref lemon::MaxBipartiteMatching "MaxBipartiteMatching" Hopcroft-Karp
3.337 + augmenting path algorithm for calculate maximum cardinality matching in
3.338 + bipartite graphs
3.339 +- \ref lemon::PrBipartiteMatching "PrBipartiteMatching" Push-Relabel
3.340 + algorithm for calculate maximum cardinality matching in bipartite graphs
3.341 +- \ref lemon::MaxWeightedBipartiteMatching "MaxWeightedBipartiteMatching"
3.342 + Successive shortest path algorithm for calculate maximum weighted matching
3.343 + and maximum weighted bipartite matching in bipartite graph
3.344 +- \ref lemon::MinCostMaxBipartiteMatching "MinCostMaxBipartiteMatching"
3.345 + Successive shortest path algorithm for calculate minimum cost maximum
3.346 + matching in bipartite graph
3.347 +- \ref lemon::MaxMatching "MaxMatching" Edmond's blossom shrinking algorithm
3.348 + for calculate maximum cardinality matching in general graph
3.349 +- \ref lemon::MaxWeightedMatching "MaxWeightedMatching" Edmond's blossom
3.350 + shrinking algorithm for calculate maximum weighted matching in general
3.351 + graph
3.352 +- \ref lemon::MaxWeightedPerfectMatching "MaxWeightedPerfectMatching"
3.353 + Edmond's blossom shrinking algorithm for calculate maximum weighted
3.354 + perfect matching in general graph
3.355 +
3.356 +\image html bipartite_matching.png
3.357 +\image latex bipartite_matching.eps "Bipartite Matching" width=\textwidth
3.358 +
3.359 +*/
3.360 +
3.361 +/**
3.362 +@defgroup spantree Minimum Spanning Tree algorithms
3.363 +@ingroup algs
3.364 +\brief This group contains the algorithms for finding a minimum cost spanning
3.365 +tree in a graph
3.366 +
3.367 +This group contains the algorithms for finding a minimum cost spanning
3.368 +tree in a graph
3.369 +*/
3.370 +
3.371 +
3.372 +/**
3.373 +@defgroup auxalg Auxiliary algorithms
3.374 +@ingroup algs
3.375 +\brief Some algorithms implemented in LEMON.
3.376 +
3.377 +This group describes the algorithms in LEMON in order to make
3.378 +it easier to implement complex algorithms.
3.379 +*/
3.380 +
3.381 +/**
3.382 +@defgroup approx Approximation algorithms
3.383 +\brief Approximation algorithms
3.384 +
3.385 +Approximation and heuristic algorithms
3.386 +*/
3.387 +
3.388 +/**
3.389 +@defgroup gen_opt_group General Optimization Tools
3.390 +\brief This group describes some general optimization frameworks
3.391 +implemented in LEMON.
3.392 +
3.393 +This group describes some general optimization frameworks
3.394 +implemented in LEMON.
3.395 +
3.396 +*/
3.397 +
3.398 +/**
3.399 +@defgroup lp_group Lp and Mip solvers
3.400 +@ingroup gen_opt_group
3.401 +\brief Lp and Mip solver interfaces for LEMON.
3.402 +
3.403 +This group describes Lp and Mip solver interfaces for LEMON. The
3.404 +various LP solvers could be used in the same manner with this
3.405 +interface.
3.406 +
3.407 +*/
3.408 +
3.409 +/**
3.410 +@defgroup lp_utils Tools for Lp and Mip solvers
3.411 +@ingroup lp_group
3.412 +\brief This group adds some helper tools to the Lp and Mip solvers
3.413 +implemented in LEMON.
3.414 +
3.415 +This group adds some helper tools to general optimization framework
3.416 +implemented in LEMON.
3.417 +*/
3.418 +
3.419 +/**
3.420 +@defgroup metah Metaheuristics
3.421 +@ingroup gen_opt_group
3.422 +\brief Metaheuristics for LEMON library.
3.423 +
3.424 +This group contains some metaheuristic optimization tools.
3.425 +*/
3.426 +
3.427 +/**
3.428 +@defgroup utils Tools and Utilities
3.429 +\brief Tools and Utilities for Programming in LEMON
3.430 +
3.431 +Tools and Utilities for Programming in LEMON
3.432 +*/
3.433 +
3.434 +/**
3.435 +@defgroup gutils Basic Graph Utilities
3.436 +@ingroup utils
3.437 +\brief This group describes some simple basic graph utilities.
3.438 +
3.439 +This group describes some simple basic graph utilities.
3.440 +*/
3.441 +
3.442 +/**
3.443 +@defgroup misc Miscellaneous Tools
3.444 +@ingroup utils
3.445 +Here you can find several useful tools for development,
3.446 +debugging and testing.
3.447 +*/
3.448 +
3.449 +
3.450 +/**
3.451 +@defgroup timecount Time measuring and Counting
3.452 +@ingroup misc
3.453 +Here you can find simple tools for measuring the performance
3.454 +of algorithms.
3.455 +*/
3.456 +
3.457 +/**
3.458 +@defgroup graphbits Tools for Graph Implementation
3.459 +@ingroup utils
3.460 +\brief Tools to Make It Easier to Make Graphs.
3.461 +
3.462 +This group describes the tools that makes it easier to make graphs and
3.463 +the maps that dynamically update with the graph changes.
3.464 +*/
3.465 +
3.466 +/**
3.467 +@defgroup exceptions Exceptions
3.468 +@ingroup utils
3.469 +This group contains the exceptions thrown by LEMON library
3.470 +*/
3.471 +
3.472 +/**
3.473 +@defgroup io_group Input-Output
3.474 +\brief Several Graph Input-Output methods
3.475 +
3.476 +Here you can find tools for importing and exporting graphs
3.477 +and graph related data. Now it supports the LEMON format, the
3.478 +\c DIMACS format and the encapsulated postscript format.
3.479 +*/
3.480 +
3.481 +/**
3.482 +@defgroup lemon_io Lemon Input-Output
3.483 +@ingroup io_group
3.484 +\brief Reading and writing LEMON format
3.485 +
3.486 +Methods for reading and writing LEMON format. More about this
3.487 +format you can find on the \ref graph-io-page "Graph Input-Output"
3.488 +tutorial pages.
3.489 +*/
3.490 +
3.491 +/**
3.492 +@defgroup section_io Section readers and writers
3.493 +@ingroup lemon_io
3.494 +\brief Section readers and writers for lemon Input-Output.
3.495 +
3.496 +Here you can find which section readers and writers can attach to
3.497 +the LemonReader and LemonWriter.
3.498 +*/
3.499 +
3.500 +/**
3.501 +@defgroup item_io Item Readers and Writers
3.502 +@ingroup lemon_io
3.503 +\brief Item readers and writers for lemon Input-Output.
3.504 +
3.505 +The Input-Output classes can handle more data type by example
3.506 +as map or attribute value. Each of these should be written and
3.507 +read some way. The module make possible to do this.
3.508 +*/
3.509 +
3.510 +/**
3.511 +@defgroup eps_io Postscript exporting
3.512 +@ingroup io_group
3.513 +\brief General \c EPS drawer and graph exporter
3.514 +
3.515 +This group contains general \c EPS drawing methods and special
3.516 +graph exporting tools.
3.517 +*/
3.518 +
3.519 +
3.520 +/**
3.521 +@defgroup concept Concepts
3.522 +\brief Skeleton classes and concept checking classes
3.523 +
3.524 +This group describes the data/algorithm skeletons and concept checking
3.525 +classes implemented in LEMON.
3.526 +
3.527 +The purpose of the classes in this group is fourfold.
3.528 +
3.529 +- These classes contain the documentations of the concepts. In order
3.530 + to avoid document multiplications, an implementation of a concept
3.531 + simply refers to the corresponding concept class.
3.532 +
3.533 +- These classes declare every functions, <tt>typedef</tt>s etc. an
3.534 + implementation of the concepts should provide, however completely
3.535 + without implementations and real data structures behind the
3.536 + interface. On the other hand they should provide nothing else. All
3.537 + the algorithms working on a data structure meeting a certain concept
3.538 + should compile with these classes. (Though it will not run properly,
3.539 + of course.) In this way it is easily to check if an algorithm
3.540 + doesn't use any extra feature of a certain implementation.
3.541 +
3.542 +- The concept descriptor classes also provide a <em>checker class</em>
3.543 + that makes it possible check whether a certain implementation of a
3.544 + concept indeed provides all the required features.
3.545 +
3.546 +- Finally, They can serve as a skeleton of a new implementation of a concept.
3.547 +
3.548 +*/
3.549 +
3.550 +
3.551 +/**
3.552 +@defgroup graph_concepts Graph Structure Concepts
3.553 +@ingroup concept
3.554 +\brief Skeleton and concept checking classes for graph structures
3.555 +
3.556 +This group contains the skeletons and concept checking classes of LEMON's
3.557 +graph structures and helper classes used to implement these.
3.558 +*/
3.559 +
3.560 +/* --- Unused group
3.561 +@defgroup experimental Experimental Structures and Algorithms
3.562 +This group contains some Experimental structures and algorithms.
3.563 +The stuff here is subject to change.
3.564 +*/
3.565 +
3.566 +/**
3.567 +\anchor demoprograms
3.568 +
3.569 +@defgroup demos Demo programs
3.570 +
3.571 +Some demo programs are listed here. Their full source codes can be found in
3.572 +the \c demo subdirectory of the source tree.
3.573 +
3.574 +The standard compilation procedure (<tt>./configure;make</tt>) will compile
3.575 +them, as well.
3.576 +
3.577 +*/
3.578 +
3.579 +/**
3.580 +@defgroup tools Standalone utility applications
3.581 +
3.582 +Some utility applications are listed here.
3.583 +
3.584 +The standard compilation procedure (<tt>./configure;make</tt>) will compile
3.585 +them, as well.
3.586 +
3.587 +*/
3.588 +
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
4.2 +++ b/doc/license.dox Mon Jan 07 19:22:09 2008 +0100
4.3 @@ -0,0 +1,25 @@
4.4 +/* -*- C++ -*-
4.5 + *
4.6 + * This file is a part of LEMON, a generic C++ optimization library
4.7 + *
4.8 + * Copyright (C) 2003-2008
4.9 + * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
4.10 + * (Egervary Research Group on Combinatorial Optimization, EGRES).
4.11 + *
4.12 + * Permission to use, modify and distribute this software is granted
4.13 + * provided that this copyright notice appears in all copies. For
4.14 + * precise terms see the accompanying LICENSE file.
4.15 + *
4.16 + * This software is provided "AS IS" with no warranty of any kind,
4.17 + * express or implied, and with no claim as to its suitability for any
4.18 + * purpose.
4.19 + *
4.20 + */
4.21 +
4.22 +/**
4.23 +
4.24 +\page license License Terms
4.25 +
4.26 +\verbinclude LICENSE
4.27 +
4.28 +*/
5.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
5.2 +++ b/doc/mainpage.dox Mon Jan 07 19:22:09 2008 +0100
5.3 @@ -0,0 +1,60 @@
5.4 +/* -*- C++ -*-
5.5 + *
5.6 + * This file is a part of LEMON, a generic C++ optimization library
5.7 + *
5.8 + * Copyright (C) 2003-2008
5.9 + * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
5.10 + * (Egervary Research Group on Combinatorial Optimization, EGRES).
5.11 + *
5.12 + * Permission to use, modify and distribute this software is granted
5.13 + * provided that this copyright notice appears in all copies. For
5.14 + * precise terms see the accompanying LICENSE file.
5.15 + *
5.16 + * This software is provided "AS IS" with no warranty of any kind,
5.17 + * express or implied, and with no claim as to its suitability for any
5.18 + * purpose.
5.19 + *
5.20 + */
5.21 +
5.22 +/**
5.23 +\mainpage LEMON Documentation
5.24 +
5.25 +\section intro Introduction
5.26 +
5.27 +\subsection whatis What is LEMON
5.28 +
5.29 +LEMON stands for
5.30 +<b>L</b>ibrary of <b>E</b>fficient <b>M</b>odels
5.31 +and <b>O</b>ptimization in <b>N</b>etworks.
5.32 +It is a C++ template
5.33 +library aimed at combinatorial optimization tasks which
5.34 +often involve in working
5.35 +with graphs.
5.36 +
5.37 +<b>
5.38 +LEMON is an <a class="el" href="http://opensource.org/">open source</a>
5.39 +project.
5.40 +You are free to use it in your commercial or
5.41 +non-commercial applications under very permissive
5.42 +\ref license "license terms".
5.43 +</b>
5.44 +
5.45 +\subsection howtoread How to read the documentation
5.46 +
5.47 +If you want to get a quick start and see the most important features then
5.48 +take a look at our \ref quicktour
5.49 +"Quick Tour to LEMON" which will guide you along.
5.50 +
5.51 +If you already feel like using our library, see the page that tells you
5.52 +\ref getstart "How to start using LEMON".
5.53 +
5.54 +If you
5.55 +want to see how LEMON works, see
5.56 +some \ref demoprograms "demo programs"!
5.57 +
5.58 +If you know what you are looking for then try to find it under the
5.59 +<a class="el" href="modules.html">Modules</a>
5.60 +section.
5.61 +
5.62 +
5.63 +*/
6.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
6.2 +++ b/doc/namespaces.dox Mon Jan 07 19:22:09 2008 +0100
6.3 @@ -0,0 +1,30 @@
6.4 +/* -*- C++ -*-
6.5 + *
6.6 + * This file is a part of LEMON, a generic C++ optimization library
6.7 + *
6.8 + * Copyright (C) 2003-2008
6.9 + * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
6.10 + * (Egervary Research Group on Combinatorial Optimization, EGRES).
6.11 + *
6.12 + * Permission to use, modify and distribute this software is granted
6.13 + * provided that this copyright notice appears in all copies. For
6.14 + * precise terms see the accompanying LICENSE file.
6.15 + *
6.16 + * This software is provided "AS IS" with no warranty of any kind,
6.17 + * express or implied, and with no claim as to its suitability for any
6.18 + * purpose.
6.19 + *
6.20 + */
6.21 +
6.22 +/// The namespace of LEMON
6.23 +
6.24 +/// The namespace of LEMON
6.25 +///
6.26 +namespace lemon {
6.27 +
6.28 + /// The namespace of LEMON concepts and concept checking classes
6.29 +
6.30 + /// The namespace of LEMON concepts and concept checking classes
6.31 + ///
6.32 + namespace concepts {}
6.33 +}
7.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
7.2 +++ b/doc/template.h Mon Jan 07 19:22:09 2008 +0100
7.3 @@ -0,0 +1,22 @@
7.4 +/* -*- C++ -*-
7.5 + *
7.6 + * This file is a part of LEMON, a generic C++ optimization library
7.7 + *
7.8 + * Copyright (C) 2003-2008
7.9 + * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
7.10 + * (Egervary Research Group on Combinatorial Optimization, EGRES).
7.11 + *
7.12 + * Permission to use, modify and distribute this software is granted
7.13 + * provided that this copyright notice appears in all copies. For
7.14 + * precise terms see the accompanying LICENSE file.
7.15 + *
7.16 + * This software is provided "AS IS" with no warranty of any kind,
7.17 + * express or implied, and with no claim as to its suitability for any
7.18 + * purpose.
7.19 + *
7.20 + */
7.21 +
7.22 +#ifndef LEMON_TEMPLATE_H
7.23 +#define LEMON_TEMPLATE_H
7.24 +
7.25 +#endif // LEMON_TEMPLATE_H