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