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 marci@1172: not alter the physical graph, but gives an other 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 marci@1172: the residual graph can be accessed by an other algorithm, or a node-set marci@1172: is to be shrunk for an other 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: /** 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: /** 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: /** alpar@785: @defgroup graphmapfactory Tools to Make It Easier to Make Graph Maps alpar@785: @ingroup auxdat alpar@785: \brief Tools to Make It Easier to Make Graph Maps. alpar@785: alpar@785: This group describes the tools that makes it easier to make graph maps that alpar@785: 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 alpar@947: \brief This group describes some simple general graph utilities. alpar@947: @ingroup galgs 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: alpar@1329: \brief 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. alpar@678: */ alpar@678: alpar@678: /** 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@1287: @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: /** 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@794: /** 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: alpar@1558: The standard compilation procedure (./compile;make) will compile them, alpar@1558: as well. alpar@1558: alpar@1558: */ alpar@1558: