gravatar
alpar (Alpar Juttner)
alpar@cs.elte.hu
Several doc files ported from svn -r3436 - groups.dox contains several incomlete references
0 0 7
default
7 files changed with 919 insertions and 0 deletions:
↑ Collapse diff ↑
Ignore white space 6 line context
1
/* -*- C++ -*-
2
 *
3
 * This file is a part of LEMON, a generic C++ optimization library
4
 *
5
 * Copyright (C) 2003-2008
6
 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
7
 * (Egervary Research Group on Combinatorial Optimization, EGRES).
8
 *
9
 * Permission to use, modify and distribute this software is granted
10
 * provided that this copyright notice appears in all copies. For
11
 * precise terms see the accompanying LICENSE file.
12
 *
13
 * This software is provided "AS IS" with no warranty of any kind,
14
 * express or implied, and with no claim as to its suitability for any
15
 * purpose.
16
 *
17
 */
18

	
19
/*!
20

	
21
\page coding_style LEMON Coding Style 
22

	
23
\section naming_conv Naming Conventions
24

	
25
In order to make development easier we have made some conventions
26
according to coding style. These include names of types, classes,
27
functions, variables, constants and exceptions. If these conventions
28
are met in one's code then it is easier to read and maintain
29
it. Please comply with these conventions if you want to contribute
30
developing LEMON library.
31

	
32
\note When the coding style requires the capitalization of an abbreviation,
33
only the first letter should be upper case.
34

	
35
\code
36
XmlReader
37
\endcode
38

	
39

	
40
\warning In some cases we diverge from these rules.
41
This primary done because STL uses different naming convention and
42
in certain cases
43
it is beneficial to provide STL compatible interface.
44

	
45
\subsection cs-files File Names
46

	
47
The header file names should look like the following.
48

	
49
\code
50
header_file.h
51
\endcode
52

	
53
Note that all standard LEMON headers are located in the \c lemon subdirectory,
54
so you should include them from C++ source like this:
55

	
56
\code
57
#include <lemon/header_file.h>
58
\endcode
59

	
60
The source code files use the same style and they have '.cc' extension.
61

	
62
\code
63
source_code.cc
64
\endcode
65

	
66
\subsection cs-class Classes and other types
67

	
68
The name of a class or any type should look like the following.
69

	
70
\code
71
AllWordsCapitalizedWithoutUnderscores 
72
\endcode
73

	
74
\subsection cs-func Methods and other functions
75

	
76
The name of a function should look like the following.
77

	
78
\code
79
firstWordLowerCaseRestCapitalizedWithoutUnderscores 
80
\endcode
81

	
82
\subsection cs-funcs Constants, Macros
83

	
84
The names of constants and macros should look like the following.
85

	
86
\code
87
ALL_UPPER_CASE_WITH_UNDERSCORES 
88
\endcode
89

	
90
\subsection cs-loc-var Class and instance member variables, auto variables 
91

	
92
The names of class and instance member variables and auto variables (=variables used locally in methods) should look like the following.
93

	
94
\code
95
all_lower_case_with_underscores 
96
\endcode
97

	
98
\subsection cs-excep Exceptions
99

	
100
When writing exceptions please comply the following naming conventions.
101

	
102
\code
103
ClassNameEndsWithException
104
\endcode
105

	
106
or
107

	
108
\code
109
ClassNameEndsWithError
110
\endcode
111

	
112
\section header-template Template Header File
113

	
114
Each LEMON header file should look like this:
115

	
116
\include template.h
117

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

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

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

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

	
31
Auxiliary (and the whole generated) documentation.
32
*/
33

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

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

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

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

	
48
*/
49

	
50

	
51

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

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

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

	
68
This directory contains the concept descriptors and concept checkers. As a user
69
you typically don't have to deal with these files.
70
*/
71

	
72
/**
73
\dir bits
74
\brief Implementation helper files
75

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

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

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

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

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

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

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

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

	
65
Graph types between real graphs and graph adaptors. These classes wrap
66
graphs to give new functionality as the adaptors do it. On the other
67
hand they are not light-weight structures as the adaptors.
68
*/
69

	
70
/**
71
@defgroup maps Maps 
72
@ingroup datas
73
\brief Some special purpose map to make life easier.
74

	
75
LEMON provides several special maps that e.g. combine
76
new maps from existing ones.
77
*/
78

	
79
/**
80
@defgroup graph_maps Graph Maps 
81
@ingroup maps
82
\brief Special Graph-Related Maps.
83

	
84
These maps are specifically designed to assign values to the nodes and edges of
85
graphs.
86
*/
87

	
88

	
89
/**
90
\defgroup map_adaptors Map Adaptors
91
\ingroup maps
92
\brief Tools to create new maps from existing ones
93

	
94
Map adaptors are used to create "implicit" maps from other maps.
95

	
96
Most of them are \ref lemon::concepts::ReadMap "ReadMap"s. They can
97
make arithmetic operations between one or two maps (negation, scaling,
98
addition, multiplication etc.) or e.g. convert a map to another one
99
of different Value type.
100

	
101
The typical usage of this classes is the passing implicit maps to
102
algorithms.  If a function type algorithm is called then the function
103
type map adaptors can be used comfortable. For example let's see the
104
usage of map adaptors with the \c graphToEps() function:
105
\code
106
  Color nodeColor(int deg) {
107
    if (deg >= 2) {
108
      return Color(0.5, 0.0, 0.5);
109
    } else if (deg == 1) {
110
      return Color(1.0, 0.5, 1.0);
111
    } else {
112
      return Color(0.0, 0.0, 0.0);
113
    }
114
  }
115
  
116
  Graph::NodeMap<int> degree_map(graph);
117
  
118
  graphToEps(graph, "graph.eps")
119
    .coords(coords).scaleToA4().undirected()
120
    .nodeColors(composeMap(functorMap(nodeColor), degree_map)) 
121
    .run();
122
\endcode 
123
The \c functorMap() function makes an \c int to \c Color map from the
124
\e nodeColor() function. The \c composeMap() compose the \e degree_map
125
and the previous created map. The composed map is proper function to
126
get color of each node.
127

	
128
The usage with class type algorithms is little bit harder. In this
129
case the function type map adaptors can not be used, because the
130
function map adaptors give back temporarly objects.
131
\code
132
  Graph graph;
133
  
134
  typedef Graph::EdgeMap<double> DoubleEdgeMap;
135
  DoubleEdgeMap length(graph);
136
  DoubleEdgeMap speed(graph);
137
  
138
  typedef DivMap<DoubleEdgeMap, DoubleEdgeMap> TimeMap;
139
  
140
  TimeMap time(length, speed);
141
  
142
  Dijkstra<Graph, TimeMap> dijkstra(graph, time);
143
  dijkstra.run(source, target);
144
\endcode
145

	
146
We have a length map and a maximum speed map on a graph. The minimum
147
time to pass the edge can be calculated as the division of the two
148
maps which can be done implicitly with the \c DivMap template
149
class. We use the implicit minimum time map as the length map of the
150
\c Dijkstra algorithm.
151
*/
152

	
153
/**
154
@defgroup matrices Matrices 
155
@ingroup datas
156
\brief Two dimensional data storages.
157

	
158
Two dimensional data storages.
159
*/
160

	
161
/**
162
@defgroup paths Path Structures
163
@ingroup datas
164
\brief Path structures implemented in LEMON.
165

	
166
LEMON provides flexible data structures
167
to work with paths.
168

	
169
All of them have similar interfaces, and it can be copied easily with
170
assignment operator and copy constructor. This make it easy and
171
efficient to have e.g. the Dijkstra algorithm to store its result in
172
any kind of path structure.
173

	
174
\sa lemon::concepts::Path
175

	
176
*/
177

	
178
/**
179
@defgroup auxdat Auxiliary Data Structures
180
@ingroup datas
181
\brief Some data structures implemented in LEMON.
182

	
183
This group describes the data structures implemented in LEMON in
184
order to make it easier to implement combinatorial algorithms.
185
*/
186

	
187

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

	
193
This group describes the several algorithms
194
implemented in LEMON.
195
*/
196

	
197
/**
198
@defgroup search Graph Search
199
@ingroup algs
200
\brief This group contains the common graph
201
search algorithms.
202

	
203
This group contains the common graph
204
search algorithms like Bfs and Dfs.
205
*/
206

	
207
/**
208
@defgroup shortest_path Shortest Path algorithms
209
@ingroup algs
210
\brief This group describes the algorithms
211
for finding shortest paths.
212

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

	
216
*/
217

	
218
/** 
219
@defgroup max_flow Maximum Flow algorithms 
220
@ingroup algs 
221
\brief This group describes the algorithms for finding maximum flows.
222

	
223
This group describes the algorithms for finding maximum flows and
224
feasible circulations.
225

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

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

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

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

	
247
*/
248

	
249
/**
250
@defgroup min_cost_flow Minimum Cost Flow algorithms
251
@ingroup algs
252

	
253
\brief This group describes the algorithms
254
for finding minimum cost flows and circulations.
255

	
256
This group describes the algorithms for finding minimum cost flows and
257
circulations.  
258
*/
259

	
260
/**
261
@defgroup min_cut Minimum Cut algorithms 
262
@ingroup algs 
263

	
264
\brief This group describes the algorithms for finding minimum cut in
265
graphs.
266

	
267
This group describes the algorithms for finding minimum cut in graphs.
268

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

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

	
277
The lemon contains several algorithms related to minimum cut problems:
278

	
279
- \ref lemon::HaoOrlin "Hao-Orlin algorithm" for calculate minimum cut
280
  in directed graphs  
281
- \ref lemon::NagamochiIbaraki "Nagamochi-Ibaraki algorithm" for
282
  calculate minimum cut in undirected graphs
283
- \ref lemon::GomoryHuTree "Gomory-Hu tree computation" for calculate all
284
  pairs minimum cut in undirected graphs
285

	
286
If you want to find minimum cut just between two distinict nodes,
287
please see the \ref max_flow "Maximum Flow page".
288

	
289
*/
290

	
291
/**
292
@defgroup graph_prop Connectivity and other graph properties
293
@ingroup algs
294
\brief This group describes the algorithms
295
for discover the graph properties
296

	
297
This group describes the algorithms for discover the graph properties
298
like connectivity, bipartiteness, euler property, simplicity, etc...
299

	
300
\image html edge_biconnected_components.png
301
\image latex edge_biconnected_components.eps "bi-edge-connected components" width=\textwidth
302
*/
303

	
304
/**
305
@defgroup planar Planarity embedding and drawing
306
@ingroup algs
307
\brief This group contains algorithms for planarity embedding and drawing
308

	
309
This group contains algorithms for planarity checking, embedding and drawing.
310

	
311
\image html planar.png
312
\image latex planar.eps "Plane graph" width=\textwidth
313
*/
314

	
315
/**
316
@defgroup matching Matching algorithms 
317
@ingroup algs
318
\brief This group describes the algorithms
319
for find matchings in graphs and bipartite graphs.
320

	
321
This group provides some algorithm objects and function to calculate
322
matchings in graphs and bipartite graphs. The general matching problem is
323
finding a subset of the edges which does not shares common endpoints.
324
 
325
There are several different algorithms for calculate matchings in
326
graphs.  The matching problems in bipartite graphs are generally
327
easier than in general graphs. The goal of the matching optimization
328
can be the finding maximum cardinality, maximum weight or minimum cost
329
matching. The search can be constrained to find perfect or
330
maximum cardinality matching.
331

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

	
353
\image html bipartite_matching.png
354
\image latex bipartite_matching.eps "Bipartite Matching" width=\textwidth
355

	
356
*/
357

	
358
/**
359
@defgroup spantree Minimum Spanning Tree algorithms
360
@ingroup algs
361
\brief This group contains the algorithms for finding a minimum cost spanning
362
tree in a graph
363

	
364
This group contains the algorithms for finding a minimum cost spanning
365
tree in a graph
366
*/
367

	
368

	
369
/**
370
@defgroup auxalg Auxiliary algorithms
371
@ingroup algs
372
\brief Some algorithms implemented in LEMON.
373

	
374
This group describes the algorithms in LEMON in order to make 
375
it easier to implement complex algorithms.
376
*/
377

	
378
/**
379
@defgroup approx Approximation algorithms
380
\brief Approximation algorithms
381

	
382
Approximation and heuristic algorithms
383
*/
384

	
385
/**
386
@defgroup gen_opt_group General Optimization Tools
387
\brief This group describes some general optimization frameworks
388
implemented in LEMON.
389

	
390
This group describes some general optimization frameworks
391
implemented in LEMON.
392

	
393
*/
394

	
395
/**
396
@defgroup lp_group Lp and Mip solvers
397
@ingroup gen_opt_group
398
\brief Lp and Mip solver interfaces for LEMON.
399

	
400
This group describes Lp and Mip solver interfaces for LEMON. The
401
various LP solvers could be used in the same manner with this
402
interface.
403

	
404
*/
405

	
406
/** 
407
@defgroup lp_utils Tools for Lp and Mip solvers 
408
@ingroup lp_group
409
\brief This group adds some helper tools to the Lp and Mip solvers
410
implemented in LEMON.
411

	
412
This group adds some helper tools to general optimization framework
413
implemented in LEMON.
414
*/
415

	
416
/**
417
@defgroup metah Metaheuristics
418
@ingroup gen_opt_group
419
\brief Metaheuristics for LEMON library.
420

	
421
This group contains some metaheuristic optimization tools.
422
*/
423

	
424
/**
425
@defgroup utils Tools and Utilities 
426
\brief Tools and Utilities for Programming in LEMON
427

	
428
Tools and Utilities for Programming in LEMON
429
*/
430

	
431
/**
432
@defgroup gutils Basic Graph Utilities
433
@ingroup utils
434
\brief This group describes some simple basic graph utilities.
435

	
436
This group describes some simple basic graph utilities.
437
*/
438

	
439
/**
440
@defgroup misc Miscellaneous Tools
441
@ingroup utils
442
Here you can find several useful tools for development,
443
debugging and testing.
444
*/
445

	
446

	
447
/**
448
@defgroup timecount Time measuring and Counting
449
@ingroup misc
450
Here you can find simple tools for measuring the performance
451
of algorithms.
452
*/
453

	
454
/**
455
@defgroup graphbits Tools for Graph Implementation
456
@ingroup utils
457
\brief Tools to Make It Easier to Make Graphs.
458

	
459
This group describes the tools that makes it easier to make graphs and
460
the maps that dynamically update with the graph changes.
461
*/
462

	
463
/**
464
@defgroup exceptions Exceptions
465
@ingroup utils
466
This group contains the exceptions thrown by LEMON library
467
*/
468

	
469
/**
470
@defgroup io_group Input-Output
471
\brief Several Graph Input-Output methods
472

	
473
Here you can find tools for importing and exporting graphs 
474
and graph related data. Now it supports the LEMON format, the
475
\c DIMACS format and the encapsulated postscript format.
476
*/
477

	
478
/**
479
@defgroup lemon_io Lemon Input-Output
480
@ingroup io_group
481
\brief Reading and writing LEMON format
482

	
483
Methods for reading and writing LEMON format. More about this
484
format you can find on the \ref graph-io-page "Graph Input-Output"
485
tutorial pages.
486
*/
487

	
488
/**
489
@defgroup section_io Section readers and writers
490
@ingroup lemon_io
491
\brief Section readers and writers for lemon Input-Output.
492

	
493
Here you can find which section readers and writers can attach to
494
the LemonReader and LemonWriter.
495
*/
496

	
497
/**
498
@defgroup item_io Item Readers and Writers
499
@ingroup lemon_io
500
\brief Item readers and writers for lemon Input-Output.
501

	
502
The Input-Output classes can handle more data type by example
503
as map or attribute value. Each of these should be written and
504
read some way. The module make possible to do this.  
505
*/
506

	
507
/**
508
@defgroup eps_io Postscript exporting
509
@ingroup io_group
510
\brief General \c EPS drawer and graph exporter
511

	
512
This group contains general \c EPS drawing methods and special
513
graph exporting tools. 
514
*/
515

	
516

	
517
/**
518
@defgroup concept Concepts
519
\brief Skeleton classes and concept checking classes
520

	
521
This group describes the data/algorithm skeletons and concept checking
522
classes implemented in LEMON.
523

	
524
The purpose of the classes in this group is fourfold.
525
 
526
- These classes contain the documentations of the concepts. In order
527
  to avoid document multiplications, an implementation of a concept
528
  simply refers to the corresponding concept class.
529

	
530
- These classes declare every functions, <tt>typedef</tt>s etc. an
531
  implementation of the concepts should provide, however completely
532
  without implementations and real data structures behind the
533
  interface. On the other hand they should provide nothing else. All
534
  the algorithms working on a data structure meeting a certain concept
535
  should compile with these classes. (Though it will not run properly,
536
  of course.) In this way it is easily to check if an algorithm
537
  doesn't use any extra feature of a certain implementation.
538

	
539
- The concept descriptor classes also provide a <em>checker class</em>
540
  that makes it possible check whether a certain implementation of a
541
  concept indeed provides all the required features.
542

	
543
- Finally, They can serve as a skeleton of a new implementation of a concept.
544

	
545
*/
546

	
547

	
548
/**
549
@defgroup graph_concepts Graph Structure Concepts
550
@ingroup concept
551
\brief Skeleton and concept checking classes for graph structures
552

	
553
This group contains the skeletons and concept checking classes of LEMON's
554
graph structures and helper classes used to implement these.
555
*/
556

	
557
/* --- Unused group
558
@defgroup experimental Experimental Structures and Algorithms
559
This group contains some Experimental structures and algorithms.
560
The stuff here is subject to change.
561
*/
562

	
563
/**
564
\anchor demoprograms
565

	
566
@defgroup demos Demo programs
567

	
568
Some demo programs are listed here. Their full source codes can be found in
569
the \c demo subdirectory of the source tree.
570

	
571
The standard compilation procedure (<tt>./configure;make</tt>) will compile
572
them, as well. 
573

	
574
*/
575

	
576
/**
577
@defgroup tools Standalone utility applications
578

	
579
Some utility applications are listed here. 
580

	
581
The standard compilation procedure (<tt>./configure;make</tt>) will compile
582
them, as well. 
583

	
584
*/
585

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

	
19
/**
20

	
21
\page license License Terms
22

	
23
\verbinclude LICENSE
24

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

	
19
/**
20
\mainpage LEMON Documentation
21

	
22
\section intro Introduction
23

	
24
\subsection whatis What is LEMON
25

	
26
LEMON stands for
27
<b>L</b>ibrary of <b>E</b>fficient <b>M</b>odels
28
and <b>O</b>ptimization in <b>N</b>etworks.
29
It is a C++ template
30
library aimed at combinatorial optimization tasks which
31
often involve in working
32
with graphs.
33

	
34
<b>
35
LEMON is an <a class="el" href="http://opensource.org/">open&nbsp;source</a>
36
project.
37
You are free to use it in your commercial or
38
non-commercial applications under very permissive
39
\ref license "license terms".
40
</b>
41

	
42
\subsection howtoread How to read the documentation
43

	
44
If you want to get a quick start and see the most important features then 
45
take a look at our \ref quicktour
46
"Quick Tour to LEMON" which will guide you along.
47

	
48
If you already feel like using our library, see the page that tells you 
49
\ref getstart "How to start using LEMON".
50

	
51
If you 
52
want to see how LEMON works, see 
53
some \ref demoprograms "demo programs"!
54

	
55
If you know what you are looking for then try to find it under the
56
<a class="el" href="modules.html">Modules</a>
57
section.
58

	
59

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

	
19
/// The namespace of LEMON
20

	
21
/// The namespace of LEMON
22
///
23
namespace lemon {
24

	
25
  /// The namespace of LEMON concepts and concept checking classes
26

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

	
19
#ifndef LEMON_TEMPLATE_H
20
#define LEMON_TEMPLATE_H
21

	
22
#endif // LEMON_TEMPLATE_H
0 comments (0 inline)