gravatar
kpeter (Peter Kovacs)
kpeter@inf.elte.hu
Doc improvements
0 4 0
default
4 files changed with 25 insertions and 35 deletions:
↑ Collapse diff ↑
Ignore white space 25165824 line context
1 1
Installation Instructions
2 2
=========================
3 3

	
4
   Since you are reading this I assume you already obtained one of the release
4
Since you are reading this I assume you already obtained one of the release
5 5
tarballs and successfully extracted it. The latest version of LEMON is
6 6
available at our web page (http://lemon.cs.elte.hu/).
7 7

	
8
   In order to install LEMON from the extracted source tarball you have to
8
In order to install LEMON from the extracted source tarball you have to
9 9
issue the following commands:
10 10

	
11 11
   1. `cd lemon-x.y.z'
12 12

	
13 13
      This command changes to the directory which was created when you
14 14
      extracted the sources. The x.y.z part is a version number.
15 15

	
16 16
   2. `./configure'
17 17

	
18 18
      This command runs the configure shell script, which does some checks and
19 19
      creates the makefiles.
20 20

	
21 21
   3. `make'
22 22

	
23 23
      This command compiles the non-template part of LEMON into libemon.a
24
      file. It also compiles the programs in the tools, benchmark and demo
25
      subdirectories when enabled.
24
      file. It also compiles the programs in the tools and demo subdirectories
25
      when enabled.
26 26

	
27 27
   4. `make check'
28 28

	
29 29
      This step is optional, but recommended. It runs the test programs that
30 30
      we developed for LEMON to check whether the library works properly on
31 31
      your platform.
32 32

	
33 33
   5. `make install'
34 34

	
35 35
      This command installs LEMON under /usr/local (you will need root
36 36
      privileges to be able to do that). If you want to install it to some
37 37
      other location, then pass the --prefix=DIRECTORY flag to configure in
38 38
      step 2. For example: `./configure --prefix=/home/username/lemon'.
39 39

	
40 40
   6. `make install-html'
41 41

	
42 42
      This command installs the documentation under share/doc/lemon/docs. The
43 43
      generated documentation is included in the tarball. If you want to
44 44
      generate it yourself, then run `make html'. Note that for this you need
45 45
      to have the following programs installed: Doxygen, Graphviz, Ghostscript,
46 46
      Latex.
47 47

	
48 48

	
49 49
Configure Options and Variables
50 50
===============================
51 51

	
52
   In step 2 you can customize the actions of configure by setting variables
52
In step 2 you can customize the actions of configure by setting variables
53 53
and passing options to it. This can be done like this:
54 54
`./configure [OPTION]... [VARIABLE=VALUE]...'
55 55

	
56
   Below you will find some useful variables and options (see
57
`./configure --help' for more):
56
Below you will find some useful variables and options (see `./configure --help'
57
for more):
58 58

	
59 59
CXX='comp'
60 60

	
61 61
  Change the C++ compiler to 'comp'.
62 62

	
63 63
CXXFLAGS='flags'
64 64

	
65 65
  Pass the 'flags' to the compiler. For example CXXFLAGS='-O3 -march=pentium-m'
66 66
  turns on generation of aggressively optimized Pentium-M specific code.
67 67

	
68 68
--prefix=PREFIX
69 69

	
70 70
  Set the installation prefix to PREFIX. By default it is /usr/local.
71 71

	
72 72
--enable-demo
73 73

	
74 74
   Build the examples in the demo subdirectory.
75 75

	
76 76
--disable-demo
77 77

	
78 78
   Do not build the examples in the demo subdirectory (default).
79 79

	
80
--enable-benchmark
81

	
82
   Build the programs in the benchmark subdirectory.
83

	
84
--disable-benchmark
85

	
86
   Do not build the programs in the benchmark subdirectory (default).
87

	
88 80
--enable-tools
89 81

	
90 82
   Build the programs in the tools subdirectory (default).
91 83

	
92 84
--disable-tools
93 85

	
94 86
   Do not build the programs in the tools subdirectory.
95 87

	
96 88
--with-glpk[=PREFIX]
97 89

	
98 90
   Enable GLPK support (default). You should specify the prefix too if
99 91
   you installed GLPK to some non-standard location (e.g. your home
100 92
   directory). If it is not found, GLPK support will be disabled.
101 93

	
102 94
--with-glpk-includedir=DIR
103 95

	
104 96
   The directory where the GLPK header files are located. This is only
105 97
   useful when the GLPK headers and libraries are not under the same
106 98
   prefix (which is unlikely).
107 99

	
108 100
--with-glpk-libdir=DIR
109 101

	
110 102
   The directory where the GLPK libraries are located. This is only
111 103
   useful when the GLPK headers and libraries are not under the same
112 104
   prefix (which is unlikely).
113 105

	
114 106
--without-glpk
115 107

	
116 108
   Disable GLPK support.
117 109

	
118 110
--with-cplex[=PREFIX]
119 111

	
120 112
   Enable CPLEX support (default). You should specify the prefix too
121 113
   if you installed CPLEX to some non-standard location
122 114
   (e.g. /opt/ilog/cplex75). If it is not found, CPLEX support will be
123 115
   disabled.
124 116

	
125 117
--with-cplex-includedir=DIR
126 118

	
127 119
   The directory where the CPLEX header files are located. This is
128 120
   only useful when the CPLEX headers and libraries are not under the
129 121
   same prefix (e.g.  /usr/local/cplex/cplex75/include).
130 122

	
131 123
--with-cplex-libdir=DIR
132 124

	
133 125
   The directory where the CPLEX libraries are located. This is only
134 126
   useful when the CPLEX headers and libraries are not under the same
135 127
   prefix (e.g.
136 128
   /usr/local/cplex/cplex75/lib/i86_linux2_glibc2.2_gcc3.0/static_pic_mt).
137 129

	
138 130
--without-cplex
139 131

	
140 132
   Disable CPLEX support.
141 133

	
142 134
--with-soplex[=PREFIX]
143 135

	
144 136
   Enable SoPlex support (default). You should specify the prefix too if
145 137
   you installed SoPlex to some non-standard location (e.g. your home
146 138
   directory). If it is not found, SoPlex support will be disabled.
147 139

	
148 140
--with-soplex-includedir=DIR
149 141

	
150 142
   The directory where the SoPlex header files are located. This is only
151 143
   useful when the SoPlex headers and libraries are not under the same
152 144
   prefix (which is unlikely).
153 145

	
154 146
--with-soplex-libdir=DIR
155 147

	
156 148
   The directory where the SoPlex libraries are located. This is only
157 149
   useful when the SoPlex headers and libraries are not under the same
158 150
   prefix (which is unlikely).
159 151

	
160 152
--without-soplex
161 153

	
162 154
   Disable SoPlex support.
Ignore white space 6 line context
1 1
==================================================================
2 2
LEMON - a Library of Efficient Models and Optimization in Networks
3 3
==================================================================
4 4

	
5 5
LEMON is an open source library written in C++. It provides
6 6
easy-to-use implementations of common data structures and algorithms
7 7
in the area of optimization and helps implementing new ones. The main
8 8
focus is on graphs and graph algorithms, thus it is especially
9 9
suitable for solving design and optimization problems of
10 10
telecommunication networks. To achieve wide usability its data
11 11
structures and algorithms provide generic interfaces.
12 12

	
13 13
Contents
14 14
========
15 15

	
16 16
LICENSE
17 17

	
18 18
   Copying, distribution and modification conditions and terms.
19 19

	
20 20
INSTALL
21 21

	
22 22
   General building and installation instructions.
23 23

	
24 24
lemon/
25 25

	
26 26
   Source code of LEMON library.
27 27

	
28 28
doc/
29 29

	
30 30
   Documentation of LEMON. The starting page is doc/html/index.html.
31 31

	
32 32
demo/
33 33

	
34 34
   Some example programs to make you easier to get familiar with LEMON.
35 35

	
36 36
test/
37 37

	
38
   Contains programs to check the integrity and correctness of LEMON.
38
   Programs to check the integrity and correctness of LEMON.
39 39

	
40 40
tools/
41 41

	
42 42
   Various utilities related to LEMON.
Ignore white space 6 line context
1 1
/* -*- mode: C++; indent-tabs-mode: nil; -*-
2 2
 *
3 3
 * This file is a part of LEMON, a generic C++ optimization library.
4 4
 *
5 5
 * Copyright (C) 2003-2008
6 6
 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
7 7
 * (Egervary Research Group on Combinatorial Optimization, EGRES).
8 8
 *
9 9
 * Permission to use, modify and distribute this software is granted
10 10
 * provided that this copyright notice appears in all copies. For
11 11
 * precise terms see the accompanying LICENSE file.
12 12
 *
13 13
 * This software is provided "AS IS" with no warranty of any kind,
14 14
 * express or implied, and with no claim as to its suitability for any
15 15
 * purpose.
16 16
 *
17 17
 */
18 18

	
19 19
/**
20 20
\dir demo
21
\brief A collection of demo application.
21
\brief A collection of demo applications.
22 22

	
23
This directory contains several simple demo application, mainly
23
This directory contains several simple demo applications, mainly
24 24
for educational purposes.
25 25
*/
26 26

	
27 27
/**
28 28
\dir doc
29 29
\brief Auxiliary (and the whole generated) documentation.
30 30

	
31
Auxiliary (and the whole generated) documentation.
31
This directory contains some auxiliary pages and the whole generated
32
documentation.
32 33
*/
33 34

	
34 35
/**
35 36
\dir test
36 37
\brief Test programs.
37 38

	
38 39
This directory contains several test programs that check the consistency
39 40
of the code.
40 41
*/
41 42

	
42 43
/**
43 44
\dir tools
44
\brief Some useful executables
45
\brief Some useful executables.
45 46

	
46 47
This directory contains the sources of some useful complete executables.
47

	
48 48
*/
49 49

	
50

	
51

	
52 50
/**
53 51
\dir lemon
54
\brief Base include directory of LEMON
52
\brief Base include directory of LEMON.
55 53

	
56
This is the base directory of lemon includes, so each include file must be
54
This is the base directory of LEMON includes, so each include file must be
57 55
prefixed with this, e.g.
58 56
\code
59 57
#include<lemon/list_graph.h>
60 58
#include<lemon/dijkstra.h>
61 59
\endcode
62 60
*/
63 61

	
64 62
/**
65 63
\dir concepts
66
\brief Concept descriptors and checking classes
64
\brief Concept descriptors and checking classes.
67 65

	
68
This directory contains the concept descriptors and concept checkers. As a user
69
you typically don't have to deal with these files.
66
This directory contains the concept descriptors and concept checking tools.
67
For more information see the \ref concept "Concepts" module.
70 68
*/
71 69

	
72 70
/**
73 71
\dir bits
74
\brief Implementation helper files
72
\brief Auxiliary tools for implementation.
75 73

	
76
This directory contains some helper classes to implement graphs, maps and
77
some other classes. As a user you typically don't have to deal with these
78
files.
74
This directory contains some auxiliary classes for implementing graphs, 
75
maps and some other classes.
76
As a user you typically don't have to deal with these files.
79 77
*/
Ignore white space 6 line context
1 1
/* -*- mode: C++; indent-tabs-mode: nil; -*-
2 2
 *
3 3
 * This file is a part of LEMON, a generic C++ optimization library.
4 4
 *
5 5
 * Copyright (C) 2003-2008
6 6
 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
7 7
 * (Egervary Research Group on Combinatorial Optimization, EGRES).
8 8
 *
9 9
 * Permission to use, modify and distribute this software is granted
10 10
 * provided that this copyright notice appears in all copies. For
11 11
 * precise terms see the accompanying LICENSE file.
12 12
 *
13 13
 * This software is provided "AS IS" with no warranty of any kind,
14 14
 * express or implied, and with no claim as to its suitability for any
15 15
 * purpose.
16 16
 *
17 17
 */
18 18

	
19 19
/**
20 20
@defgroup datas Data Structures
21 21
This group describes the several data structures implemented in LEMON.
22 22
*/
23 23

	
24 24
/**
25 25
@defgroup graphs Graph Structures
26 26
@ingroup datas
27 27
\brief Graph structures implemented in LEMON.
28 28

	
29 29
The implementation of combinatorial algorithms heavily relies on
30 30
efficient graph implementations. LEMON offers data structures which are
31 31
planned to be easily used in an experimental phase of implementation studies,
32 32
and thereafter the program code can be made efficient by small modifications.
33 33

	
34 34
The most efficient implementation of diverse applications require the
35 35
usage of different physical graph implementations. These differences
36 36
appear in the size of graph we require to handle, memory or time usage
37 37
limitations or in the set of operations through which the graph can be
38 38
accessed.  LEMON provides several physical graph structures to meet
39 39
the diverging requirements of the possible users.  In order to save on
40 40
running time or on memory usage, some structures may fail to provide
41 41
some graph features like arc/edge or node deletion.
42 42

	
43 43
Alteration of standard containers need a very limited number of
44 44
operations, these together satisfy the everyday requirements.
45 45
In the case of graph structures, different operations are needed which do
46 46
not alter the physical graph, but gives another view. If some nodes or
47 47
arcs have to be hidden or the reverse oriented graph have to be used, then
48 48
this is the case. It also may happen that in a flow implementation
49 49
the residual graph can be accessed by another algorithm, or a node-set
50 50
is to be shrunk for another algorithm.
51 51
LEMON also provides a variety of graphs for these requirements called
52 52
\ref graph_adaptors "graph adaptors". Adaptors cannot be used alone but only
53 53
in conjunction with other graph representations.
54 54

	
55 55
You are free to use the graph structure that fit your requirements
56 56
the best, most graph algorithms and auxiliary data structures can be used
57 57
with any graph structure.
58 58

	
59 59
<b>See also:</b> \ref graph_concepts "Graph Structure Concepts".
60 60
*/
61 61

	
62 62
/**
63 63
@defgroup semi_adaptors Semi-Adaptor Classes for Graphs
64 64
@ingroup graphs
65 65
\brief Graph types between real graphs and graph adaptors.
66 66

	
67 67
This group describes some graph types between real graphs and graph adaptors.
68 68
These classes wrap graphs to give new functionality as the adaptors do it.
69 69
On the other hand they are not light-weight structures as the adaptors.
70 70
*/
71 71

	
72 72
/**
73 73
@defgroup maps Maps
74 74
@ingroup datas
75 75
\brief Map structures implemented in LEMON.
76 76

	
77 77
This group describes the map structures implemented in LEMON.
78 78

	
79 79
LEMON provides several special purpose maps and map adaptors that e.g. combine
80 80
new maps from existing ones.
81 81

	
82 82
<b>See also:</b> \ref map_concepts "Map Concepts".
83 83
*/
84 84

	
85 85
/**
86 86
@defgroup graph_maps Graph Maps
87 87
@ingroup maps
88 88
\brief Special graph-related maps.
89 89

	
90 90
This group describes maps that are specifically designed to assign
91 91
values to the nodes and arcs of graphs.
92 92
*/
93 93

	
94 94
/**
95 95
\defgroup map_adaptors Map Adaptors
96 96
\ingroup maps
97 97
\brief Tools to create new maps from existing ones
98 98

	
99 99
This group describes map adaptors that are used to create "implicit"
100 100
maps from other maps.
101 101

	
102 102
Most of them are \ref lemon::concepts::ReadMap "read-only maps".
103 103
They can make arithmetic and logical operations between one or two maps
104 104
(negation, shifting, addition, multiplication, logical 'and', 'or',
105 105
'not' etc.) or e.g. convert a map to another one of different Value type.
106 106

	
107 107
The typical usage of this classes is passing implicit maps to
108 108
algorithms.  If a function type algorithm is called then the function
109 109
type map adaptors can be used comfortable. For example let's see the
110 110
usage of map adaptors with the \c graphToEps() function.
111 111
\code
112 112
  Color nodeColor(int deg) {
113 113
    if (deg >= 2) {
114 114
      return Color(0.5, 0.0, 0.5);
115 115
    } else if (deg == 1) {
116 116
      return Color(1.0, 0.5, 1.0);
117 117
    } else {
118 118
      return Color(0.0, 0.0, 0.0);
119 119
    }
120 120
  }
121 121

	
122 122
  Digraph::NodeMap<int> degree_map(graph);
123 123

	
124 124
  graphToEps(graph, "graph.eps")
125 125
    .coords(coords).scaleToA4().undirected()
126 126
    .nodeColors(composeMap(functorToMap(nodeColor), degree_map))
127 127
    .run();
128 128
\endcode
129 129
The \c functorToMap() function makes an \c int to \c Color map from the
130 130
\c nodeColor() function. The \c composeMap() compose the \c degree_map
131 131
and the previously created map. The composed map is a proper function to
132 132
get the color of each node.
133 133

	
134 134
The usage with class type algorithms is little bit harder. In this
135 135
case the function type map adaptors can not be used, because the
136 136
function map adaptors give back temporary objects.
137 137
\code
138 138
  Digraph graph;
139 139

	
140 140
  typedef Digraph::ArcMap<double> DoubleArcMap;
141 141
  DoubleArcMap length(graph);
142 142
  DoubleArcMap speed(graph);
143 143

	
144 144
  typedef DivMap<DoubleArcMap, DoubleArcMap> TimeMap;
145 145
  TimeMap time(length, speed);
146 146

	
147 147
  Dijkstra<Digraph, TimeMap> dijkstra(graph, time);
148 148
  dijkstra.run(source, target);
149 149
\endcode
150 150
We have a length map and a maximum speed map on the arcs of a digraph.
151 151
The minimum time to pass the arc can be calculated as the division of
152 152
the two maps which can be done implicitly with the \c DivMap template
153 153
class. We use the implicit minimum time map as the length map of the
154 154
\c Dijkstra algorithm.
155 155
*/
156 156

	
157 157
/**
158 158
@defgroup matrices Matrices
159 159
@ingroup datas
160 160
\brief Two dimensional data storages implemented in LEMON.
161 161

	
162 162
This group describes two dimensional data storages implemented in LEMON.
163 163
*/
164 164

	
165 165
/**
166 166
@defgroup paths Path Structures
167 167
@ingroup datas
168
\brief Path structures implemented in LEMON.
168
\brief %Path structures implemented in LEMON.
169 169

	
170 170
This group describes the path structures implemented in LEMON.
171 171

	
172 172
LEMON provides flexible data structures to work with paths.
173 173
All of them have similar interfaces and they can be copied easily with
174 174
assignment operators and copy constructors. This makes it easy and
175 175
efficient to have e.g. the Dijkstra algorithm to store its result in
176 176
any kind of path structure.
177 177

	
178 178
\sa lemon::concepts::Path
179 179
*/
180 180

	
181 181
/**
182 182
@defgroup auxdat Auxiliary Data Structures
183 183
@ingroup datas
184 184
\brief Auxiliary data structures implemented in LEMON.
185 185

	
186 186
This group describes some data structures implemented in LEMON in
187 187
order to make it easier to implement combinatorial algorithms.
188 188
*/
189 189

	
190 190
/**
191 191
@defgroup algs Algorithms
192 192
\brief This group describes the several algorithms
193 193
implemented in LEMON.
194 194

	
195 195
This group describes the several algorithms
196 196
implemented in LEMON.
197 197
*/
198 198

	
199 199
/**
200 200
@defgroup search Graph Search
201 201
@ingroup algs
202 202
\brief Common graph search algorithms.
203 203

	
204 204
This group describes the common graph search algorithms like
205 205
Breadth-First Search (BFS) and Depth-First Search (DFS).
206 206
*/
207 207

	
208 208
/**
209 209
@defgroup shortest_path Shortest Path Algorithms
210 210
@ingroup algs
211 211
\brief Algorithms for finding shortest paths.
212 212

	
213 213
This group describes the algorithms for finding shortest paths in graphs.
214 214
*/
215 215

	
216 216
/**
217 217
@defgroup max_flow Maximum Flow Algorithms
218 218
@ingroup algs
219 219
\brief Algorithms for finding maximum flows.
220 220

	
221 221
This group describes the algorithms for finding maximum flows and
222 222
feasible circulations.
223 223

	
224 224
The maximum flow problem is to find a flow between a single source and
225 225
a single target that is maximum. Formally, there is a \f$G=(V,A)\f$
226 226
directed graph, an \f$c_a:A\rightarrow\mathbf{R}^+_0\f$ capacity
227 227
function and given \f$s, t \in V\f$ source and target node. The
228 228
maximum flow is the \f$f_a\f$ solution of the next optimization problem:
229 229

	
230 230
\f[ 0 \le f_a \le c_a \f]
231 231
\f[ \sum_{v\in\delta^{-}(u)}f_{vu}=\sum_{v\in\delta^{+}(u)}f_{uv}
232 232
\qquad \forall u \in V \setminus \{s,t\}\f]
233 233
\f[ \max \sum_{v\in\delta^{+}(s)}f_{uv} - \sum_{v\in\delta^{-}(s)}f_{vu}\f]
234 234

	
235 235
LEMON contains several algorithms for solving maximum flow problems:
236 236
- \ref lemon::EdmondsKarp "Edmonds-Karp"
237 237
- \ref lemon::Preflow "Goldberg's Preflow algorithm"
238 238
- \ref lemon::DinitzSleatorTarjan "Dinitz's blocking flow algorithm with dynamic trees"
239 239
- \ref lemon::GoldbergTarjan "Preflow algorithm with dynamic trees"
240 240

	
241 241
In most cases the \ref lemon::Preflow "Preflow" algorithm provides the
242 242
fastest method to compute the maximum flow. All impelementations
243 243
provides functions to query the minimum cut, which is the dual linear
244 244
programming problem of the maximum flow.
245 245
*/
246 246

	
247 247
/**
248 248
@defgroup min_cost_flow Minimum Cost Flow Algorithms
249 249
@ingroup algs
250 250

	
251 251
\brief Algorithms for finding minimum cost flows and circulations.
252 252

	
253 253
This group describes the algorithms for finding minimum cost flows and
254 254
circulations.
255 255
*/
256 256

	
257 257
/**
258 258
@defgroup min_cut Minimum Cut Algorithms
259 259
@ingroup algs
260 260

	
261 261
\brief Algorithms for finding minimum cut in graphs.
262 262

	
263 263
This group describes the algorithms for finding minimum cut in graphs.
264 264

	
265 265
The minimum cut problem is to find a non-empty and non-complete
266 266
\f$X\f$ subset of the vertices with minimum overall capacity on
267 267
outgoing arcs. Formally, there is \f$G=(V,A)\f$ directed graph, an
268 268
\f$c_a:A\rightarrow\mathbf{R}^+_0\f$ capacity function. The minimum
269 269
cut is the \f$X\f$ solution of the next optimization problem:
270 270

	
271 271
\f[ \min_{X \subset V, X\not\in \{\emptyset, V\}}
272 272
\sum_{uv\in A, u\in X, v\not\in X}c_{uv}\f]
273 273

	
274 274
LEMON contains several algorithms related to minimum cut problems:
275 275

	
276 276
- \ref lemon::HaoOrlin "Hao-Orlin algorithm" to calculate minimum cut
277 277
  in directed graphs
278 278
- \ref lemon::NagamochiIbaraki "Nagamochi-Ibaraki algorithm" to
279 279
  calculate minimum cut in undirected graphs
280 280
- \ref lemon::GomoryHuTree "Gomory-Hu tree computation" to calculate all
281 281
  pairs minimum cut in undirected graphs
282 282

	
283 283
If you want to find minimum cut just between two distinict nodes,
284 284
please see the \ref max_flow "Maximum Flow page".
285 285
*/
286 286

	
287 287
/**
288 288
@defgroup graph_prop Connectivity and Other Graph Properties
289 289
@ingroup algs
290 290
\brief Algorithms for discovering the graph properties
291 291

	
292 292
This group describes the algorithms for discovering the graph properties
293 293
like connectivity, bipartiteness, euler property, simplicity etc.
294 294

	
295 295
\image html edge_biconnected_components.png
296 296
\image latex edge_biconnected_components.eps "bi-edge-connected components" width=\textwidth
297 297
*/
298 298

	
299 299
/**
300 300
@defgroup planar Planarity Embedding and Drawing
301 301
@ingroup algs
302 302
\brief Algorithms for planarity checking, embedding and drawing
303 303

	
304 304
This group describes the algorithms for planarity checking,
305 305
embedding and drawing.
306 306

	
307 307
\image html planar.png
308 308
\image latex planar.eps "Plane graph" width=\textwidth
309 309
*/
310 310

	
311 311
/**
312 312
@defgroup matching Matching Algorithms
313 313
@ingroup algs
314 314
\brief Algorithms for finding matchings in graphs and bipartite graphs.
315 315

	
316 316
This group contains algorithm objects and functions to calculate
317 317
matchings in graphs and bipartite graphs. The general matching problem is
318 318
finding a subset of the arcs which does not shares common endpoints.
319 319

	
320 320
There are several different algorithms for calculate matchings in
321 321
graphs.  The matching problems in bipartite graphs are generally
322 322
easier than in general graphs. The goal of the matching optimization
323 323
can be the finding maximum cardinality, maximum weight or minimum cost
324 324
matching. The search can be constrained to find perfect or
325 325
maximum cardinality matching.
326 326

	
327 327
LEMON contains the next algorithms:
328 328
- \ref lemon::MaxBipartiteMatching "MaxBipartiteMatching" Hopcroft-Karp
329 329
  augmenting path algorithm for calculate maximum cardinality matching in
330 330
  bipartite graphs
331 331
- \ref lemon::PrBipartiteMatching "PrBipartiteMatching" Push-Relabel
332 332
  algorithm for calculate maximum cardinality matching in bipartite graphs
333 333
- \ref lemon::MaxWeightedBipartiteMatching "MaxWeightedBipartiteMatching"
334 334
  Successive shortest path algorithm for calculate maximum weighted matching
335 335
  and maximum weighted bipartite matching in bipartite graph
336 336
- \ref lemon::MinCostMaxBipartiteMatching "MinCostMaxBipartiteMatching"
337 337
  Successive shortest path algorithm for calculate minimum cost maximum
338 338
  matching in bipartite graph
339 339
- \ref lemon::MaxMatching "MaxMatching" Edmond's blossom shrinking algorithm
340 340
  for calculate maximum cardinality matching in general graph
341 341
- \ref lemon::MaxWeightedMatching "MaxWeightedMatching" Edmond's blossom
342 342
  shrinking algorithm for calculate maximum weighted matching in general
343 343
  graph
344 344
- \ref lemon::MaxWeightedPerfectMatching "MaxWeightedPerfectMatching"
345 345
  Edmond's blossom shrinking algorithm for calculate maximum weighted
346 346
  perfect matching in general graph
347 347

	
348 348
\image html bipartite_matching.png
349 349
\image latex bipartite_matching.eps "Bipartite Matching" width=\textwidth
350 350
*/
351 351

	
352 352
/**
353 353
@defgroup spantree Minimum Spanning Tree Algorithms
354 354
@ingroup algs
355 355
\brief Algorithms for finding a minimum cost spanning tree in a graph.
356 356

	
357 357
This group describes the algorithms for finding a minimum cost spanning
358 358
tree in a graph
359 359
*/
360 360

	
361 361
/**
362 362
@defgroup auxalg Auxiliary Algorithms
363 363
@ingroup algs
364 364
\brief Auxiliary algorithms implemented in LEMON.
365 365

	
366 366
This group describes some algorithms implemented in LEMON
367 367
in order to make it easier to implement complex algorithms.
368 368
*/
369 369

	
370 370
/**
371 371
@defgroup approx Approximation Algorithms
372 372
@ingroup algs
373 373
\brief Approximation algorithms.
374 374

	
375 375
This group describes the approximation and heuristic algorithms
376 376
implemented in LEMON.
377 377
*/
378 378

	
379 379
/**
380 380
@defgroup gen_opt_group General Optimization Tools
381 381
\brief This group describes some general optimization frameworks
382 382
implemented in LEMON.
383 383

	
384 384
This group describes some general optimization frameworks
385 385
implemented in LEMON.
386 386
*/
387 387

	
388 388
/**
389 389
@defgroup lp_group Lp and Mip Solvers
390 390
@ingroup gen_opt_group
391 391
\brief Lp and Mip solver interfaces for LEMON.
392 392

	
393 393
This group describes Lp and Mip solver interfaces for LEMON. The
394 394
various LP solvers could be used in the same manner with this
395 395
interface.
396 396
*/
397 397

	
398 398
/**
399 399
@defgroup lp_utils Tools for Lp and Mip Solvers
400 400
@ingroup lp_group
401 401
\brief Helper tools to the Lp and Mip solvers.
402 402

	
403 403
This group adds some helper tools to general optimization framework
404 404
implemented in LEMON.
405 405
*/
406 406

	
407 407
/**
408 408
@defgroup metah Metaheuristics
409 409
@ingroup gen_opt_group
410 410
\brief Metaheuristics for LEMON library.
411 411

	
412 412
This group describes some metaheuristic optimization tools.
413 413
*/
414 414

	
415 415
/**
416 416
@defgroup utils Tools and Utilities
417 417
\brief Tools and utilities for programming in LEMON
418 418

	
419 419
Tools and utilities for programming in LEMON.
420 420
*/
421 421

	
422 422
/**
423 423
@defgroup gutils Basic Graph Utilities
424 424
@ingroup utils
425 425
\brief Simple basic graph utilities.
426 426

	
427 427
This group describes some simple basic graph utilities.
428 428
*/
429 429

	
430 430
/**
431 431
@defgroup misc Miscellaneous Tools
432 432
@ingroup utils
433 433
\brief Tools for development, debugging and testing.
434 434

	
435 435
This group describes several useful tools for development,
436 436
debugging and testing.
437 437
*/
438 438

	
439 439
/**
440 440
@defgroup timecount Time Measuring and Counting
441 441
@ingroup misc
442 442
\brief Simple tools for measuring the performance of algorithms.
443 443

	
444 444
This group describes simple tools for measuring the performance
445 445
of algorithms.
446 446
*/
447 447

	
448 448
/**
449 449
@defgroup exceptions Exceptions
450 450
@ingroup utils
451 451
\brief Exceptions defined in LEMON.
452 452

	
453 453
This group describes the exceptions defined in LEMON.
454 454
*/
455 455

	
456 456
/**
457 457
@defgroup io_group Input-Output
458 458
\brief Graph Input-Output methods
459 459

	
460 460
This group describes the tools for importing and exporting graphs
461 461
and graph related data. Now it supports the \ref lgf-format
462 462
"LEMON Graph Format", the \c DIMACS format and the encapsulated
463 463
postscript (EPS) format.
464 464
*/
465 465

	
466 466
/**
467 467
@defgroup lemon_io LEMON Input-Output
468 468
@ingroup io_group
469 469
\brief Reading and writing LEMON Graph Format.
470 470

	
471 471
This group describes methods for reading and writing
472 472
\ref lgf-format "LEMON Graph Format".
473 473
*/
474 474

	
475 475
/**
476 476
@defgroup eps_io Postscript Exporting
477 477
@ingroup io_group
478 478
\brief General \c EPS drawer and graph exporter
479 479

	
480 480
This group describes general \c EPS drawing methods and special
481 481
graph exporting tools.
482 482
*/
483 483

	
484 484
/**
485 485
@defgroup concept Concepts
486 486
\brief Skeleton classes and concept checking classes
487 487

	
488 488
This group describes the data/algorithm skeletons and concept checking
489 489
classes implemented in LEMON.
490 490

	
491 491
The purpose of the classes in this group is fourfold.
492 492

	
493
- These classes contain the documentations of the concepts. In order
493
- These classes contain the documentations of the %concepts. In order
494 494
  to avoid document multiplications, an implementation of a concept
495 495
  simply refers to the corresponding concept class.
496 496

	
497 497
- These classes declare every functions, <tt>typedef</tt>s etc. an
498
  implementation of the concepts should provide, however completely
498
  implementation of the %concepts should provide, however completely
499 499
  without implementations and real data structures behind the
500 500
  interface. On the other hand they should provide nothing else. All
501 501
  the algorithms working on a data structure meeting a certain concept
502 502
  should compile with these classes. (Though it will not run properly,
503 503
  of course.) In this way it is easily to check if an algorithm
504 504
  doesn't use any extra feature of a certain implementation.
505 505

	
506 506
- The concept descriptor classes also provide a <em>checker class</em>
507 507
  that makes it possible to check whether a certain implementation of a
508 508
  concept indeed provides all the required features.
509 509

	
510 510
- Finally, They can serve as a skeleton of a new implementation of a concept.
511 511
*/
512 512

	
513 513
/**
514 514
@defgroup graph_concepts Graph Structure Concepts
515 515
@ingroup concept
516 516
\brief Skeleton and concept checking classes for graph structures
517 517

	
518 518
This group describes the skeletons and concept checking classes of LEMON's
519 519
graph structures and helper classes used to implement these.
520 520
*/
521 521

	
522 522
/**
523 523
@defgroup map_concepts Map Concepts
524 524
@ingroup concept
525 525
\brief Skeleton and concept checking classes for maps
526 526

	
527 527
This group describes the skeletons and concept checking classes of maps.
528 528
*/
529 529

	
530 530
/**
531 531
\anchor demoprograms
532 532

	
533 533
@defgroup demos Demo programs
534 534

	
535 535
Some demo programs are listed here. Their full source codes can be found in
536 536
the \c demo subdirectory of the source tree.
537 537

	
538 538
It order to compile them, use <tt>--enable-demo</tt> configure option when
539 539
build the library.
540 540
*/
541 541

	
542 542
/**
543 543
@defgroup tools Standalone utility applications
544 544

	
545 545
Some utility applications are listed here.
546 546

	
547 547
The standard compilation procedure (<tt>./configure;make</tt>) will compile
548 548
them, as well.
549 549
*/
550 550

	
0 comments (0 inline)