tools.dox
changeset 31 02083323ff2c
child 32 ef12f83752f6
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/tools.dox	Mon Feb 15 01:47:33 2010 +0100
     1.3 @@ -0,0 +1,67 @@
     1.4 +/* -*- mode: C++; indent-tabs-mode: nil; -*-
     1.5 + *
     1.6 + * This file is a part of LEMON, a generic C++ optimization library.
     1.7 + *
     1.8 + * Copyright (C) 2003-2009
     1.9 + * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
    1.10 + * (Egervary Research Group on Combinatorial Optimization, EGRES).
    1.11 + *
    1.12 + * Permission to use, modify and distribute this software is granted
    1.13 + * provided that this copyright notice appears in all copies. For
    1.14 + * precise terms see the accompanying LICENSE file.
    1.15 + *
    1.16 + * This software is provided "AS IS" with no warranty of any kind,
    1.17 + * express or implied, and with no claim as to its suitability for any
    1.18 + * purpose.
    1.19 + *
    1.20 + */
    1.21 +
    1.22 +namespace lemon {
    1.23 +/**
    1.24 +[PAGE]sec_tools[PAGE] Tools
    1.25 +
    1.26 +\todo Clarify this section.
    1.27 +
    1.28 +[SEC]sec_aux_structures[SEC] Auxiliary Data Structures
    1.29 +Graph algorithms depend on various auxiliary data structures and algorithms.
    1.30 +For example, heaps play an important role in Dijkstra and Prim
    1.31 +algorithms, both the theoretical and practical performance of them
    1.32 +are determined by the applied heap implementation.
    1.33 +
    1.34 +LEMON implements various such auxiliary tools. For instance,
    1.35 +several data structures are available for maintaining \e disjoint \e sets.
    1.36 +\ref UnionFind is the classical union-find data structure, which is
    1.37 +used to implement the \ref Kruskal algorithm.
    1.38 +The \ref UnionFindEnum and \ref HeapUnionFind classes are used in
    1.39 +matching algorithms, the first one supports the enumeration of the
    1.40 +items stored in the sets, while the second one also assigns priorities to the
    1.41 +elements and an item having minimum priority can be retrieved set-wise.
    1.42 +
    1.43 +
    1.44 +[SEC]sec_graph_to_eps[SEC] Graph to EPS
    1.45 +
    1.46 +Another nice feature of the library is \ref graphToEps(), a highly
    1.47 +configurable graph displaying tool (using EPS output format).
    1.48 +Originally, it was developed to evaluate the flexibility and scalability
    1.49 +of LEMON's approach to implement named parameters. Later it
    1.50 +has been evolved into a versatile tool featuring above 35 named
    1.51 +parameters. The following code demonstrates its typical use. 
    1.52 +
    1.53 +\code
    1.54 +  graphToEps(g, "graph.eps")
    1.55 +    .coords(coords)
    1.56 +    .title("Sample EPS figure")
    1.57 +    .copyright("(c) 2003-2010 LEMON Project")
    1.58 +    .absoluteNodeSizes().absoluteArcWidths()
    1.59 +    .nodeScale(2).nodeSizes(sizes)
    1.60 +    .nodeShapes(shapes)
    1.61 +    .nodeColors(composeMap(palette, colors))
    1.62 +    .arcColors(composeMap(palette, acolors))
    1.63 +    .arcWidthScale(.4).arcWidths(widths)
    1.64 +    .nodeTexts(id).nodeTextSize(3)
    1.65 +    .run();
    1.66 +\endcode
    1.67 +
    1.68 +[TRAILER]
    1.69 +*/
    1.70 +}