/* -*- mode: C++; indent-tabs-mode: nil; -*-
*
* This file is a part of LEMON, a generic C++ optimization library.
*
* Copyright (C) 2003-2010
* Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
* (Egervary Research Group on Combinatorial Optimization, EGRES).
*
* Permission to use, modify and distribute this software is granted
* provided that this copyright notice appears in all copies. For
* precise terms see the accompanying LICENSE file.
*
* This software is provided "AS IS" with no warranty of any kind,
* express or implied, and with no claim as to its suitability for any
* purpose.
*
*/
namespace lemon {
/**
[PAGE]sec_tools[PAGE] Tools
\todo Clarify this section.
[SEC]sec_aux_structures[SEC] Auxiliary Data Structures
Graph algorithms depend on various auxiliary data structures and algorithms.
For example, heaps play an important role in Dijkstra and Prim
algorithms, both the theoretical and practical performance of them
are determined by the applied heap implementation.
LEMON implements various such auxiliary tools. For instance,
several data structures are available for maintaining \e disjoint \e sets.
\ref UnionFind is the classical union-find data structure, which is
used to implement the \ref Kruskal algorithm.
The \ref UnionFindEnum and \ref HeapUnionFind classes are used in
matching algorithms, the first one supports the enumeration of the
items stored in the sets, while the second one also assigns priorities to the
elements and an item having minimum priority can be retrieved set-wise.
[SEC]sec_graph_to_eps[SEC] Graph to EPS
Another nice feature of the library is \ref graphToEps(), a highly
configurable graph displaying tool (using EPS output format).
Originally, it was developed to evaluate the flexibility and scalability
of LEMON's approach to implement named parameters. Later it
has been evolved into a versatile tool featuring above 35 named
parameters. The following code demonstrates its typical use.
\code
graphToEps(g, "graph.eps")
.coords(coords)
.title("Sample EPS figure")
.copyright("(c) 2003-2010 LEMON Project")
.absoluteNodeSizes().absoluteArcWidths()
.nodeScale(2).nodeSizes(sizes)
.nodeShapes(shapes)
.nodeColors(composeMap(palette, colors))
.arcColors(composeMap(palette, acolors))
.arcWidthScale(.4).arcWidths(widths)
.nodeTexts(id).nodeTextSize(3)
.run();
\endcode
[TRAILER]
*/
}