Several doc files ported from svn -r3436
authorAlpar Juttner <alpar@cs.elte.hu>
Mon, 07 Jan 2008 19:22:09 +0100
changeset 408f4e8273a458
parent 39 0a01d811071f
child 41 b11737922197
Several doc files ported from svn -r3436

- groups.dox contains several incomlete references
doc/coding_style.dox
doc/dirs.dox
doc/groups.dox
doc/license.dox
doc/mainpage.dox
doc/namespaces.dox
doc/template.h
     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&nbsp;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