alpar@814: alpar@678: /** alpar@678: @defgroup datas Data Structures alpar@921: This group describes the several graph structures implemented in LEMON. alpar@678: */ alpar@430: alpar@678: /** alpar@678: @defgroup graphs Graph Structures alpar@678: @ingroup datas alpar@921: \brief Graph structures implemented in LEMON. alpar@430: marci@1172: The implementation of combinatorial algorithms heavily relies on marci@1172: efficient graph implementations. LEMON offers data structures which are marci@1172: planned to be easily used in an experimental phase of implementation studies, marci@1172: and thereafter the program code can be made efficient by small modifications. alpar@430: marci@1172: The most efficient implementation of diverse applications require the usage of different physical graph implementations. These differences appear in the size of marci@1172: graph we require to handle, memory or time usage limitations or in marci@1172: the set of operations through which the graph can be accessed. marci@1172: LEMON provides several physical graph structures to meet the marci@1172: diverging requirements of the possible users. marci@1172: In order to save on running time or on memory usage, some structures may marci@1172: fail to provide some graph features like edge or node deletion. marci@1172: marci@1172: Alteration of standard containers need a very limited number of marci@1172: operations, these together satisfy the everyday requirements. marci@1172: In the case of graph strutures, different operations are needed which do alpar@2006: not alter the physical graph, but gives another view. If some nodes or marci@1172: edges have to be hidden or the reverse oriented graph have to be used, then marci@1172: this is the case. It also may happen that in a flow implemenation alpar@2006: the residual graph can be accessed by another algorithm, or a node-set alpar@2006: is to be shrunk for another algorithm. marci@1172: LEMON also provides a variety of graphs for these requirements called alpar@1401: \ref graph_adaptors "graph adaptors". Adaptors cannot be used alone but only marci@1172: in conjunction with other graph representation. alpar@430: alpar@678: You are free to use the graph structure that fit your requirements alpar@678: the best, most graph algorithms and auxiliary data structures can be used marci@1172: with any graph structures. alpar@678: */ alpar@430: alpar@678: /** deba@1866: @defgroup semi_adaptors Semi-Adaptors Classes for Graphs deba@1866: @ingroup graphs deba@1866: \brief Graph types between real graphs and graph adaptors. deba@1866: deba@1866: Graph types between real graphs and graph adaptors. These classes deba@1866: wrap graphs to give new functionality as the adaptors do it. But the deba@1866: other way they are not light-weigth structures as the adaptors. deba@1866: */ deba@1866: deba@1866: /** alpar@1043: @defgroup maps Maps alpar@1043: @ingroup datas alpar@1043: \brief Some special purpose map to make life easier. alpar@1043: alpar@1043: LEMON provides several special maps that e.g. combine alpar@1043: new maps from existing ones. alpar@1043: */ alpar@1043: alpar@1402: /** alpar@1402: @defgroup graph_maps Graph Maps alpar@1402: @ingroup maps alpar@1402: \brief Special Graph-Related Maps. alpar@1402: alpar@1402: These maps are specifically designed to assign values to the nodes and edges of alpar@1402: graphs. alpar@1402: */ alpar@1402: alpar@1402: alpar@1402: /** alpar@1402: \defgroup map_adaptors Map Adaptors alpar@1402: \ingroup maps alpar@1402: \brief Tools to create new maps from existing ones alpar@1402: alpar@1402: Map adaptors are used to create "implicit" maps from other maps. alpar@1402: alpar@1536: Most of them are \ref lemon::concept::ReadMap "ReadMap"s. They can alpar@1402: make arithmetic oprerations between one or two maps (negation, scalig, alpar@1402: addition, multiplication etc.) or e.g. convert a map to another one alpar@1402: of different Value type. alpar@1402: */ alpar@1402: alpar@1043: /** alpar@678: @defgroup auxdat Auxiliary Data Structures alpar@678: @ingroup datas alpar@921: \brief Some data structures implemented in LEMON. alpar@406: alpar@921: This group describes the data structures implemented in LEMON in alpar@678: order to make it easier to implement combinatorial algorithms. alpar@678: */ alpar@406: alpar@678: /** deba@1996: @defgroup graphbits Tools to Make It Easier to Make Graphs alpar@785: @ingroup auxdat deba@1996: \brief Tools to Make It Easier to Make Graphs. alpar@785: deba@1996: This group describes the tools that makes it easier to make graphs and deba@1996: the maps that dynamically update with the graph changes. alpar@785: */ alpar@785: alpar@785: /** alpar@678: @defgroup galgs Graph Algorithms alpar@678: \brief This group describes the several graph algorithms alpar@921: implemented in LEMON. alpar@947: alpar@947: This group describes the several graph algorithms alpar@947: implemented in LEMON. alpar@947: */ alpar@947: alpar@947: /** alpar@947: @defgroup gutils General Graph Utilities deba@1914: @ingroup galgs alpar@947: \brief This group describes some simple general graph utilities. alpar@947: alpar@947: This group describes some simple general graph utilities. alpar@678: */ alpar@678: alpar@678: /** alpar@1329: @defgroup gen_opt_group General Optimization Tools alpar@1329: \brief This group describes some general optimization frameworks alpar@1329: implemented in LEMON. alpar@1329: deba@2060: This group describes some general optimization frameworks alpar@1329: implemented in LEMON. alpar@1329: alpar@1329: */ alpar@1329: alpar@1329: /** alpar@758: @defgroup flowalgs Path and Flow Algorithms alpar@678: @ingroup galgs alpar@758: \brief This group describes the algorithms alpar@758: for finding paths and flows in graphs. deba@2060: deba@2060: This group describes the algorithms deba@2060: for finding paths and flows in graphs. deba@2060: deba@2060: \image html flow.png deba@2060: \image latex flow.eps "Graph flow" width=\textwidth alpar@678: */ alpar@678: alpar@678: /** deba@1750: @defgroup topology Topology related algorithms deba@1750: @ingroup galgs deba@1750: \brief This group describes the algorithms deba@1750: for discover the topology of the graphs. deba@2060: deba@2060: This group describes the algorithms deba@2060: for discover the topology of the graphs. deba@2060: deba@2060: \image html edge_biconnected_components.png deba@2060: \image latex edge_biconnected_components.eps "bi-edge-connected components" width=\textwidth deba@2060: deba@1750: */ deba@1750: deba@1750: /** deba@2042: @defgroup matching Matching algorithms in graphs and bipartite graphs deba@2042: @ingroup galgs deba@2042: \brief This group describes the algorithms deba@2042: for find matchings in graphs and bipartite graphs. deba@2060: deba@2060: This group provides some algorithm objects and function deba@2060: to calculate matchings in graphs and bipartite graphs. deba@2060: deba@2060: \image html bipartite_matching.png deba@2060: \image latex bipartite_matching.eps "Bipartite Matching" width=\textwidth deba@2060: deba@2042: */ deba@2042: deba@2042: /** alpar@1151: @defgroup exceptions Exceptions alpar@1151: This group contains the exceptions thrown by LEMON library alpar@1151: */ alpar@1151: alpar@1151: /** alpar@678: @defgroup misc Miscellaneous Tools alpar@678: Here you can find several useful tools for development, alpar@678: debugging and testing. alpar@678: */ alpar@678: alpar@678: /** alpar@1847: @defgroup timecount Time measuring and Counting alpar@1847: @ingroup misc alpar@1847: Here you can find simple tools for measuring the performance alpar@1847: of algorithms. alpar@1847: */ alpar@1847: alpar@1847: /** deba@2016: @defgroup io_group Input-Output alpar@1287: Here you can find tools for imporing and exporting graphs and graph related alpar@1287: data alpar@1287: */ alpar@1287: alpar@1287: /** deba@2016: @defgroup section_io Section readers and writers deba@2016: @ingroup io_group deba@2016: \brief Section readers and writers for lemon Input-Output. deba@2016: deba@2016: Here you can find which section readers and writers can attach to deba@2016: the LemonReader and LemonWriter. deba@2016: */ deba@2016: deba@2016: /** deba@2016: @defgroup item_io Item Readers and Writers deba@2016: @ingroup io_group deba@2016: \brief Item readers and writers for lemon Input-Output. deba@2016: deba@2016: The Input-Output classes can handle more data type by example deba@2016: as map or attribute value. Each of these should be written and deba@2016: read some way. The module make possible to do this. deba@2016: */ deba@2016: deba@2016: /** klao@1030: @defgroup concept Concepts klao@959: \brief Skeleton classes and concept checking classes alpar@794: klao@959: This group describes the data/algorithm skeletons and concept checking klao@1030: classes implemented in LEMON. klao@1030: klao@1030: One aim of these classes is to make it easier to check if a certain klao@1030: class or template function is correctly implemented. klao@1030: klao@1030: The other (sometimes even more important) aim is to document the concepts. klao@1030: alpar@794: */ alpar@794: klao@1030: /** klao@1030: @defgroup graph_concepts Graph Structure Concepts klao@1030: @ingroup concept klao@1030: \brief Skeleton and concept checking classes for graph structures klao@1030: klao@1030: This group contains the skeletons and concept checking classes of LEMON's klao@1030: graph structures and helper classes used to implement these. klao@1030: */ alpar@794: alpar@1587: /* --- Unused group alpar@678: @defgroup experimental Experimental Structures and Algorithms alpar@678: This group contains some Experimental structures and algorithms. alpar@678: The stuff here is subject to change. alpar@678: */ alpar@1151: alpar@1558: /** athos@1582: \anchor demoprograms athos@1582: alpar@1558: @defgroup demos Demo programs alpar@1558: alpar@1559: Some demo programs are listed here. Their full source codes can be found in alpar@1558: the \c demo subdirectory of the source tree. alpar@1558: ladanyi@1639: The standard compilation procedure (./configure;make) will compile ladanyi@1639: them, as well. alpar@1558: alpar@1558: */ alpar@1558: