gravatar
alpar (Alpar Juttner)
alpar@cs.elte.hu
Merge from trunk
0 4 0
merge 1.0
1 file changed with 22 insertions and 32 deletions:
↑ Collapse diff ↑
Show white space 256 line context
1 1
Installation Instructions
2 2
=========================
3 3

	
4 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 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 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.
Show white space 256 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.
Show white space 256 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
*/
Show white space 256 line context
... ...
@@ -10,311 +10,311 @@
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
You are free to use the graph structure that fit your requirements
44 44
the best, most graph algorithms and auxiliary data structures can be used
45 45
with any graph structure.
46 46

	
47 47
<b>See also:</b> \ref graph_concepts "Graph Structure Concepts".
48 48
*/
49 49

	
50 50
/**
51 51
@defgroup maps Maps
52 52
@ingroup datas
53 53
\brief Map structures implemented in LEMON.
54 54

	
55 55
This group describes the map structures implemented in LEMON.
56 56

	
57 57
LEMON provides several special purpose maps and map adaptors that e.g. combine
58 58
new maps from existing ones.
59 59

	
60 60
<b>See also:</b> \ref map_concepts "Map Concepts".
61 61
*/
62 62

	
63 63
/**
64 64
@defgroup graph_maps Graph Maps
65 65
@ingroup maps
66 66
\brief Special graph-related maps.
67 67

	
68 68
This group describes maps that are specifically designed to assign
69 69
values to the nodes and arcs of graphs.
70 70
*/
71 71

	
72 72
/**
73 73
\defgroup map_adaptors Map Adaptors
74 74
\ingroup maps
75 75
\brief Tools to create new maps from existing ones
76 76

	
77 77
This group describes map adaptors that are used to create "implicit"
78 78
maps from other maps.
79 79

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

	
85 85
The typical usage of this classes is passing implicit maps to
86 86
algorithms.  If a function type algorithm is called then the function
87 87
type map adaptors can be used comfortable. For example let's see the
88 88
usage of map adaptors with the \c graphToEps() function.
89 89
\code
90 90
  Color nodeColor(int deg) {
91 91
    if (deg >= 2) {
92 92
      return Color(0.5, 0.0, 0.5);
93 93
    } else if (deg == 1) {
94 94
      return Color(1.0, 0.5, 1.0);
95 95
    } else {
96 96
      return Color(0.0, 0.0, 0.0);
97 97
    }
98 98
  }
99 99

	
100 100
  Digraph::NodeMap<int> degree_map(graph);
101 101

	
102 102
  graphToEps(graph, "graph.eps")
103 103
    .coords(coords).scaleToA4().undirected()
104 104
    .nodeColors(composeMap(functorToMap(nodeColor), degree_map))
105 105
    .run();
106 106
\endcode
107 107
The \c functorToMap() function makes an \c int to \c Color map from the
108 108
\c nodeColor() function. The \c composeMap() compose the \c degree_map
109 109
and the previously created map. The composed map is a proper function to
110 110
get the color of each node.
111 111

	
112 112
The usage with class type algorithms is little bit harder. In this
113 113
case the function type map adaptors can not be used, because the
114 114
function map adaptors give back temporary objects.
115 115
\code
116 116
  Digraph graph;
117 117

	
118 118
  typedef Digraph::ArcMap<double> DoubleArcMap;
119 119
  DoubleArcMap length(graph);
120 120
  DoubleArcMap speed(graph);
121 121

	
122 122
  typedef DivMap<DoubleArcMap, DoubleArcMap> TimeMap;
123 123
  TimeMap time(length, speed);
124 124

	
125 125
  Dijkstra<Digraph, TimeMap> dijkstra(graph, time);
126 126
  dijkstra.run(source, target);
127 127
\endcode
128 128
We have a length map and a maximum speed map on the arcs of a digraph.
129 129
The minimum time to pass the arc can be calculated as the division of
130 130
the two maps which can be done implicitly with the \c DivMap template
131 131
class. We use the implicit minimum time map as the length map of the
132 132
\c Dijkstra algorithm.
133 133
*/
134 134

	
135 135
/**
136 136
@defgroup paths Path Structures
137 137
@ingroup datas
138
\brief Path structures implemented in LEMON.
138
\brief %Path structures implemented in LEMON.
139 139

	
140 140
This group describes the path structures implemented in LEMON.
141 141

	
142 142
LEMON provides flexible data structures to work with paths.
143 143
All of them have similar interfaces and they can be copied easily with
144 144
assignment operators and copy constructors. This makes it easy and
145 145
efficient to have e.g. the Dijkstra algorithm to store its result in
146 146
any kind of path structure.
147 147

	
148 148
\sa lemon::concepts::Path
149 149
*/
150 150

	
151 151
/**
152 152
@defgroup auxdat Auxiliary Data Structures
153 153
@ingroup datas
154 154
\brief Auxiliary data structures implemented in LEMON.
155 155

	
156 156
This group describes some data structures implemented in LEMON in
157 157
order to make it easier to implement combinatorial algorithms.
158 158
*/
159 159

	
160 160
/**
161 161
@defgroup algs Algorithms
162 162
\brief This group describes the several algorithms
163 163
implemented in LEMON.
164 164

	
165 165
This group describes the several algorithms
166 166
implemented in LEMON.
167 167
*/
168 168

	
169 169
/**
170 170
@defgroup search Graph Search
171 171
@ingroup algs
172 172
\brief Common graph search algorithms.
173 173

	
174 174
This group describes the common graph search algorithms like
175 175
Breadth-First Search (BFS) and Depth-First Search (DFS).
176 176
*/
177 177

	
178 178
/**
179 179
@defgroup shortest_path Shortest Path Algorithms
180 180
@ingroup algs
181 181
\brief Algorithms for finding shortest paths.
182 182

	
183 183
This group describes the algorithms for finding shortest paths in graphs.
184 184
*/
185 185

	
186 186
/**
187 187
@defgroup spantree Minimum Spanning Tree Algorithms
188 188
@ingroup algs
189 189
\brief Algorithms for finding a minimum cost spanning tree in a graph.
190 190

	
191 191
This group describes the algorithms for finding a minimum cost spanning
192 192
tree in a graph
193 193
*/
194 194

	
195 195
/**
196 196
@defgroup utils Tools and Utilities
197 197
\brief Tools and utilities for programming in LEMON
198 198

	
199 199
Tools and utilities for programming in LEMON.
200 200
*/
201 201

	
202 202
/**
203 203
@defgroup gutils Basic Graph Utilities
204 204
@ingroup utils
205 205
\brief Simple basic graph utilities.
206 206

	
207 207
This group describes some simple basic graph utilities.
208 208
*/
209 209

	
210 210
/**
211 211
@defgroup misc Miscellaneous Tools
212 212
@ingroup utils
213 213
\brief Tools for development, debugging and testing.
214 214

	
215 215
This group describes several useful tools for development,
216 216
debugging and testing.
217 217
*/
218 218

	
219 219
/**
220 220
@defgroup timecount Time Measuring and Counting
221 221
@ingroup misc
222 222
\brief Simple tools for measuring the performance of algorithms.
223 223

	
224 224
This group describes simple tools for measuring the performance
225 225
of algorithms.
226 226
*/
227 227

	
228 228
/**
229 229
@defgroup exceptions Exceptions
230 230
@ingroup utils
231 231
\brief Exceptions defined in LEMON.
232 232

	
233 233
This group describes the exceptions defined in LEMON.
234 234
*/
235 235

	
236 236
/**
237 237
@defgroup io_group Input-Output
238 238
\brief Graph Input-Output methods
239 239

	
240 240
This group describes the tools for importing and exporting graphs
241 241
and graph related data. Now it supports the LEMON format
242 242
and the encapsulated postscript (EPS) format.
243 243
postscript (EPS) format.
244 244
*/
245 245

	
246 246
/**
247 247
@defgroup lemon_io LEMON Input-Output
248 248
@ingroup io_group
249 249
\brief Reading and writing LEMON Graph Format.
250 250

	
251 251
This group describes methods for reading and writing
252 252
\ref lgf-format "LEMON Graph Format".
253 253
*/
254 254

	
255 255
/**
256 256
@defgroup eps_io Postscript Exporting
257 257
@ingroup io_group
258 258
\brief General \c EPS drawer and graph exporter
259 259

	
260 260
This group describes general \c EPS drawing methods and special
261 261
graph exporting tools.
262 262
*/
263 263

	
264 264
/**
265 265
@defgroup concept Concepts
266 266
\brief Skeleton classes and concept checking classes
267 267

	
268 268
This group describes the data/algorithm skeletons and concept checking
269 269
classes implemented in LEMON.
270 270

	
271 271
The purpose of the classes in this group is fourfold.
272 272

	
273
- These classes contain the documentations of the concepts. In order
273
- These classes contain the documentations of the %concepts. In order
274 274
  to avoid document multiplications, an implementation of a concept
275 275
  simply refers to the corresponding concept class.
276 276

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

	
286 286
- The concept descriptor classes also provide a <em>checker class</em>
287 287
  that makes it possible to check whether a certain implementation of a
288 288
  concept indeed provides all the required features.
289 289

	
290 290
- Finally, They can serve as a skeleton of a new implementation of a concept.
291 291
*/
292 292

	
293 293
/**
294 294
@defgroup graph_concepts Graph Structure Concepts
295 295
@ingroup concept
296 296
\brief Skeleton and concept checking classes for graph structures
297 297

	
298 298
This group describes the skeletons and concept checking classes of LEMON's
299 299
graph structures and helper classes used to implement these.
300 300
*/
301 301

	
302 302
/**
303 303
@defgroup map_concepts Map Concepts
304 304
@ingroup concept
305 305
\brief Skeleton and concept checking classes for maps
306 306
 
307 307
This group describes the skeletons and concept checking classes of maps.
308 308
*/
309 309

	
310 310
/**
311 311
\anchor demoprograms
312 312

	
313 313
@defgroup demos Demo programs
314 314

	
315 315
Some demo programs are listed here. Their full source codes can be found in
316 316
the \c demo subdirectory of the source tree.
317 317

	
318 318
It order to compile them, use <tt>--enable-demo</tt> configure option when
319 319
build the library.
320 320
*/
0 comments (0 inline)