gravatar
kpeter (Peter Kovacs)
kpeter@inf.elte.hu
Rearrange modules (#303)
0 2 0
default
2 files changed with 71 insertions and 64 deletions:
↑ Collapse diff ↑
Ignore white space 32 line context
... ...
@@ -213,65 +213,79 @@
213 213
  DoubleArcMap speed(graph);
214 214

	
215 215
  typedef DivMap<DoubleArcMap, DoubleArcMap> TimeMap;
216 216
  TimeMap time(length, speed);
217 217

	
218 218
  Dijkstra<Digraph, TimeMap> dijkstra(graph, time);
219 219
  dijkstra.run(source, target);
220 220
\endcode
221 221
We have a length map and a maximum speed map on the arcs of a digraph.
222 222
The minimum time to pass the arc can be calculated as the division of
223 223
the two maps which can be done implicitly with the \c DivMap template
224 224
class. We use the implicit minimum time map as the length map of the
225 225
\c Dijkstra algorithm.
226 226
*/
227 227

	
228 228
/**
229
@defgroup matrices Matrices
230
@ingroup datas
231
\brief Two dimensional data storages implemented in LEMON.
232

	
233
This group contains two dimensional data storages implemented in LEMON.
234
*/
235

	
236
/**
237 229
@defgroup paths Path Structures
238 230
@ingroup datas
239 231
\brief %Path structures implemented in LEMON.
240 232

	
241 233
This group contains the path structures implemented in LEMON.
242 234

	
243 235
LEMON provides flexible data structures to work with paths.
244 236
All of them have similar interfaces and they can be copied easily with
245 237
assignment operators and copy constructors. This makes it easy and
246 238
efficient to have e.g. the Dijkstra algorithm to store its result in
247 239
any kind of path structure.
248 240

	
249 241
\sa lemon::concepts::Path
250 242
*/
251 243

	
252 244
/**
253 245
@defgroup auxdat Auxiliary Data Structures
254 246
@ingroup datas
255 247
\brief Auxiliary data structures implemented in LEMON.
256 248

	
257 249
This group contains some data structures implemented in LEMON in
258 250
order to make it easier to implement combinatorial algorithms.
259 251
*/
260 252

	
261 253
/**
254
@defgroup geomdat Geometric Data Structures
255
@ingroup auxdat
256
\brief Geometric data structures implemented in LEMON.
257

	
258
This group contains geometric data structures implemented in LEMON.
259

	
260
 - \ref lemon::dim2::Point "dim2::Point" implements a two dimensional
261
   vector with the usual operations.
262
 - \ref lemon::dim2::Box "dim2::Box" can be used to determine the
263
   rectangular bounding box of a set of \ref lemon::dim2::Point
264
   "dim2::Point"'s.
265
*/
266

	
267
/**
268
@defgroup matrices Matrices
269
@ingroup auxdat
270
\brief Two dimensional data storages implemented in LEMON.
271

	
272
This group contains two dimensional data storages implemented in LEMON.
273
*/
274

	
275
/**
262 276
@defgroup algs Algorithms
263 277
\brief This group contains the several algorithms
264 278
implemented in LEMON.
265 279

	
266 280
This group contains the several algorithms
267 281
implemented in LEMON.
268 282
*/
269 283

	
270 284
/**
271 285
@defgroup search Graph Search
272 286
@ingroup algs
273 287
\brief Common graph search algorithms.
274 288

	
275 289
This group contains the common graph search algorithms, namely
276 290
\e breadth-first \e search (BFS) and \e depth-first \e search (DFS).
277 291
*/
... ...
@@ -285,32 +299,41 @@
285 299

	
286 300
 - \ref Dijkstra algorithm for finding shortest paths from a source node
287 301
   when all arc lengths are non-negative.
288 302
 - \ref BellmanFord "Bellman-Ford" algorithm for finding shortest paths
289 303
   from a source node when arc lenghts can be either positive or negative,
290 304
   but the digraph should not contain directed cycles with negative total
291 305
   length.
292 306
 - \ref FloydWarshall "Floyd-Warshall" and \ref Johnson "Johnson" algorithms
293 307
   for solving the \e all-pairs \e shortest \e paths \e problem when arc
294 308
   lenghts can be either positive or negative, but the digraph should
295 309
   not contain directed cycles with negative total length.
296 310
 - \ref Suurballe A successive shortest path algorithm for finding
297 311
   arc-disjoint paths between two nodes having minimum total length.
298 312
*/
299 313

	
300 314
/**
315
@defgroup spantree Minimum Spanning Tree Algorithms
316
@ingroup algs
317
\brief Algorithms for finding minimum cost spanning trees and arborescences.
318

	
319
This group contains the algorithms for finding minimum cost spanning
320
trees and arborescences.
321
*/
322

	
323
/**
301 324
@defgroup max_flow Maximum Flow Algorithms
302 325
@ingroup algs
303 326
\brief Algorithms for finding maximum flows.
304 327

	
305 328
This group contains the algorithms for finding maximum flows and
306 329
feasible circulations.
307 330

	
308 331
The \e maximum \e flow \e problem is to find a flow of maximum value between
309 332
a single source and a single target. Formally, there is a \f$G=(V,A)\f$
310 333
digraph, a \f$cap: A\rightarrow\mathbf{R}^+_0\f$ capacity function and
311 334
\f$s, t \in V\f$ source and target nodes.
312 335
A maximum flow is an \f$f: A\rightarrow\mathbf{R}^+_0\f$ solution of the
313 336
following optimization problem.
314 337

	
315 338
\f[ \max\sum_{sv\in A} f(sv) - \sum_{vs\in A} f(vs) \f]
316 339
\f[ \sum_{uv\in A} f(uv) = \sum_{vu\in A} f(vu)
... ...
@@ -378,56 +401,32 @@
378 401
    \sum_{uv\in A: u\in X, v\not\in X}cap(uv) \f]
379 402

	
380 403
LEMON contains several algorithms related to minimum cut problems:
381 404

	
382 405
- \ref HaoOrlin "Hao-Orlin algorithm" for calculating minimum cut
383 406
  in directed graphs.
384 407
- \ref NagamochiIbaraki "Nagamochi-Ibaraki algorithm" for
385 408
  calculating minimum cut in undirected graphs.
386 409
- \ref GomoryHu "Gomory-Hu tree computation" for calculating
387 410
  all-pairs minimum cut in undirected graphs.
388 411

	
389 412
If you want to find minimum cut just between two distinict nodes,
390 413
see the \ref max_flow "maximum flow problem".
391 414
*/
392 415

	
393 416
/**
394
@defgroup graph_properties Connectivity and Other Graph Properties
395
@ingroup algs
396
\brief Algorithms for discovering the graph properties
397

	
398
This group contains the algorithms for discovering the graph properties
399
like connectivity, bipartiteness, euler property, simplicity etc.
400

	
401
\image html connected_components.png
402
\image latex connected_components.eps "Connected components" width=\textwidth
403
*/
404

	
405
/**
406
@defgroup planar Planarity Embedding and Drawing
407
@ingroup algs
408
\brief Algorithms for planarity checking, embedding and drawing
409

	
410
This group contains the algorithms for planarity checking,
411
embedding and drawing.
412

	
413
\image html planar.png
414
\image latex planar.eps "Plane graph" width=\textwidth
415
*/
416

	
417
/**
418 417
@defgroup matching Matching Algorithms
419 418
@ingroup algs
420 419
\brief Algorithms for finding matchings in graphs and bipartite graphs.
421 420

	
422 421
This group contains the algorithms for calculating
423 422
matchings in graphs and bipartite graphs. The general matching problem is
424 423
finding a subset of the edges for which each node has at most one incident
425 424
edge.
426 425

	
427 426
There are several different algorithms for calculate matchings in
428 427
graphs.  The matching problems in bipartite graphs are generally
429 428
easier than in general graphs. The goal of the matching optimization
430 429
can be finding maximum cardinality, maximum weight or minimum cost
431 430
matching. The search can be constrained to find perfect or
432 431
maximum cardinality matching.
433 432

	
... ...
@@ -442,59 +441,74 @@
442 441
- \ref MinCostMaxBipartiteMatching
443 442
  Successive shortest path algorithm for calculating minimum cost maximum
444 443
  matching in bipartite graphs.
445 444
- \ref MaxMatching Edmond's blossom shrinking algorithm for calculating
446 445
  maximum cardinality matching in general graphs.
447 446
- \ref MaxWeightedMatching Edmond's blossom shrinking algorithm for calculating
448 447
  maximum weighted matching in general graphs.
449 448
- \ref MaxWeightedPerfectMatching
450 449
  Edmond's blossom shrinking algorithm for calculating maximum weighted
451 450
  perfect matching in general graphs.
452 451

	
453 452
\image html bipartite_matching.png
454 453
\image latex bipartite_matching.eps "Bipartite Matching" width=\textwidth
455 454
*/
456 455

	
457 456
/**
458
@defgroup spantree Minimum Spanning Tree Algorithms
457
@defgroup graph_properties Connectivity and Other Graph Properties
459 458
@ingroup algs
460
\brief Algorithms for finding minimum cost spanning trees and arborescences.
459
\brief Algorithms for discovering the graph properties
461 460

	
462
This group contains the algorithms for finding minimum cost spanning
463
trees and arborescences.
461
This group contains the algorithms for discovering the graph properties
462
like connectivity, bipartiteness, euler property, simplicity etc.
463

	
464
\image html connected_components.png
465
\image latex connected_components.eps "Connected components" width=\textwidth
466
*/
467

	
468
/**
469
@defgroup planar Planarity Embedding and Drawing
470
@ingroup algs
471
\brief Algorithms for planarity checking, embedding and drawing
472

	
473
This group contains the algorithms for planarity checking,
474
embedding and drawing.
475

	
476
\image html planar.png
477
\image latex planar.eps "Plane graph" width=\textwidth
478
*/
479

	
480
/**
481
@defgroup approx Approximation Algorithms
482
@ingroup algs
483
\brief Approximation algorithms.
484

	
485
This group contains the approximation and heuristic algorithms
486
implemented in LEMON.
464 487
*/
465 488

	
466 489
/**
467 490
@defgroup auxalg Auxiliary Algorithms
468 491
@ingroup algs
469 492
\brief Auxiliary algorithms implemented in LEMON.
470 493

	
471 494
This group contains some algorithms implemented in LEMON
472 495
in order to make it easier to implement complex algorithms.
473 496
*/
474 497

	
475 498
/**
476
@defgroup approx Approximation Algorithms
477
@ingroup algs
478
\brief Approximation algorithms.
479

	
480
This group contains the approximation and heuristic algorithms
481
implemented in LEMON.
482
*/
483

	
484
/**
485 499
@defgroup gen_opt_group General Optimization Tools
486 500
\brief This group contains some general optimization frameworks
487 501
implemented in LEMON.
488 502

	
489 503
This group contains some general optimization frameworks
490 504
implemented in LEMON.
491 505
*/
492 506

	
493 507
/**
494 508
@defgroup lp_group Lp and Mip Solvers
495 509
@ingroup gen_opt_group
496 510
\brief Lp and Mip solver interfaces for LEMON.
497 511

	
498 512
This group contains Lp and Mip solver interfaces for LEMON. The
499 513
various LP solvers could be used in the same manner with this
500 514
interface.
... ...
@@ -574,33 +588,33 @@
574 588
\brief Reading and writing LEMON Graph Format.
575 589

	
576 590
This group contains methods for reading and writing
577 591
\ref lgf-format "LEMON Graph Format".
578 592
*/
579 593

	
580 594
/**
581 595
@defgroup eps_io Postscript Exporting
582 596
@ingroup io_group
583 597
\brief General \c EPS drawer and graph exporter
584 598

	
585 599
This group contains general \c EPS drawing methods and special
586 600
graph exporting tools.
587 601
*/
588 602

	
589 603
/**
590
@defgroup dimacs_group DIMACS format
604
@defgroup dimacs_group DIMACS Format
591 605
@ingroup io_group
592 606
\brief Read and write files in DIMACS format
593 607

	
594 608
Tools to read a digraph from or write it to a file in DIMACS format data.
595 609
*/
596 610

	
597 611
/**
598 612
@defgroup nauty_group NAUTY Format
599 613
@ingroup io_group
600 614
\brief Read \e Nauty format
601 615

	
602 616
Tool to read graphs from \e Nauty format data.
603 617
*/
604 618

	
605 619
/**
606 620
@defgroup concept Concepts
... ...
@@ -636,37 +650,37 @@
636 650
@ingroup concept
637 651
\brief Skeleton and concept checking classes for graph structures
638 652

	
639 653
This group contains the skeletons and concept checking classes of LEMON's
640 654
graph structures and helper classes used to implement these.
641 655
*/
642 656

	
643 657
/**
644 658
@defgroup map_concepts Map Concepts
645 659
@ingroup concept
646 660
\brief Skeleton and concept checking classes for maps
647 661

	
648 662
This group contains the skeletons and concept checking classes of maps.
649 663
*/
650 664

	
651 665
/**
666
@defgroup tools Standalone Utility Applications
667

	
668
Some utility applications are listed here.
669

	
670
The standard compilation procedure (<tt>./configure;make</tt>) will compile
671
them, as well.
672
*/
673

	
674
/**
652 675
\anchor demoprograms
653 676

	
654 677
@defgroup demos Demo Programs
655 678

	
656 679
Some demo programs are listed here. Their full source codes can be found in
657 680
the \c demo subdirectory of the source tree.
658 681

	
659 682
In order to compile them, use the <tt>make demo</tt> or the
660 683
<tt>make check</tt> commands.
661 684
*/
662 685

	
663
/**
664
@defgroup tools Standalone Utility Applications
665

	
666
Some utility applications are listed here.
667

	
668
The standard compilation procedure (<tt>./configure;make</tt>) will compile
669
them, as well.
670
*/
671

	
672 686
}
Ignore white space 32 line context
... ...
@@ -8,52 +8,45 @@
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
#ifndef LEMON_DIM2_H
20 20
#define LEMON_DIM2_H
21 21

	
22 22
#include <iostream>
23 23

	
24
///\ingroup misc
24
///\ingroup geomdat
25 25
///\file
26 26
///\brief A simple two dimensional vector and a bounding box implementation
27
///
28
/// The class \ref lemon::dim2::Point "dim2::Point" implements
29
/// a two dimensional vector with the usual operations.
30
///
31
/// The class \ref lemon::dim2::Box "dim2::Box" can be used to determine
32
/// the rectangular bounding box of a set of
33
/// \ref lemon::dim2::Point "dim2::Point"'s.
34 27

	
35 28
namespace lemon {
36 29

	
37 30
  ///Tools for handling two dimensional coordinates
38 31

	
39 32
  ///This namespace is a storage of several
40 33
  ///tools for handling two dimensional coordinates
41 34
  namespace dim2 {
42 35

	
43
  /// \addtogroup misc
36
  /// \addtogroup geomdat
44 37
  /// @{
45 38

	
46 39
  /// Two dimensional vector (plain vector)
47 40

	
48 41
  /// A simple two dimensional vector (plain vector) implementation
49 42
  /// with the usual vector operations.
50 43
  template<typename T>
51 44
    class Point {
52 45

	
53 46
    public:
54 47

	
55 48
      typedef T Value;
56 49

	
57 50
      ///First coordinate
58 51
      T x;
59 52
      ///Second coordinate
0 comments (0 inline)