27 The primary data structures of LEMON are the graph classes. They all |
28 The primary data structures of LEMON are the graph classes. They all |
28 provide a node list - edge list interface, i.e. they have |
29 provide a node list - edge list interface, i.e. they have |
29 functionalities to list the nodes and the edges of the graph as well |
30 functionalities to list the nodes and the edges of the graph as well |
30 as incoming and outgoing edges of a given node. |
31 as incoming and outgoing edges of a given node. |
31 |
32 |
32 Each graph should meet the \ref lemon::concepts::Graph "Graph" concept. |
33 Each graph should meet the \ref concepts::Graph "Graph" concept. |
33 This concept does not make it possible to change the graph (i.e. it is |
34 This concept does not make it possible to change the graph (i.e. it is |
34 not possible to add or delete edges or nodes). Most of the graph |
35 not possible to add or delete edges or nodes). Most of the graph |
35 algorithms will run on these graphs. |
36 algorithms will run on these graphs. |
36 |
37 |
37 |
38 |
38 In case of graphs meeting the full feature |
39 In case of graphs meeting the full feature |
39 \ref lemon::concepts::ErasableGraph "ErasableGraph" |
40 \ref concepts::ErasableGraph "ErasableGraph" concept |
40 concept |
|
41 you can also erase individual edges and nodes in arbitrary order. |
41 you can also erase individual edges and nodes in arbitrary order. |
42 |
42 |
43 The implemented graph structures are the following. |
43 The implemented graph structures are the following. |
44 \li \ref lemon::ListGraph "ListGraph" is the most versatile graph class. It meets |
44 \li \ref ListGraph is the most versatile graph class. It meets |
45 the \ref lemon::concepts::ErasableGraph "ErasableGraph" concept |
45 the \ref concepts::ErasableGraph "ErasableGraph" concept |
46 and it also has some convenient extra features. |
46 and it also has some convenient extra features. |
47 \li \ref lemon::SmartGraph "SmartGraph" is a more memory |
47 \li \ref SmartGraph is a more memory efficient version of \ref ListGraph. |
48 efficient version of \ref lemon::ListGraph "ListGraph". The |
48 The price of this is that it only meets the |
49 price of this is that it only meets the |
49 \ref concepts::ExtendableGraph "ExtendableGraph" concept, |
50 \ref lemon::concepts::ExtendableGraph "ExtendableGraph" concept, |
|
51 so you cannot delete individual edges or nodes. |
50 so you cannot delete individual edges or nodes. |
52 \li \ref lemon::FullGraph "FullGraph" |
51 \li \ref FullGraph "FullGraph" |
53 implements a complete graph. It is a |
52 implements a complete graph. It is a |
54 \ref lemon::concepts::Graph "Graph", so you cannot |
53 \ref concepts::Graph "Graph", so you cannot |
55 change the number of nodes once it is constructed. It is extremely memory |
54 change the number of nodes once it is constructed. It is extremely memory |
56 efficient: it uses constant amount of memory independently from the number of |
55 efficient: it uses constant amount of memory independently from the number of |
57 the nodes of the graph. Of course, the size of the \ref maps-page "NodeMap"'s and |
56 the nodes of the graph. Of course, the size of the \ref maps-page "NodeMap"'s and |
58 \ref maps-page "EdgeMap"'s will depend on the number of nodes. |
57 \ref maps-page "EdgeMap"'s will depend on the number of nodes. |
59 |
58 |
60 \li \ref lemon::NodeSet "NodeSet" implements a graph with no edges. This class |
59 \li \ref NodeSet "NodeSet" implements a graph with no edges. This class |
61 can be used as a base class of \ref lemon::EdgeSet "EdgeSet". |
60 can be used as a base class of \ref lemon::EdgeSet "EdgeSet". |
62 \li \ref lemon::EdgeSet "EdgeSet" can be used to create a new graph on |
61 \li \ref EdgeSet "EdgeSet" can be used to create a new graph on |
63 the node set of another graph. The base graph can be an arbitrary graph and it |
62 the node set of another graph. The base graph can be an arbitrary graph and it |
64 is possible to attach several \ref lemon::EdgeSet "EdgeSet"'s to a base graph. |
63 is possible to attach several \ref EdgeSet "EdgeSet"'s to a base graph. |
65 |
64 |
66 \todo Don't we need SmartNodeSet and SmartEdgeSet? |
65 \todo Don't we need SmartNodeSet and SmartEdgeSet? |
67 \todo Some cross-refs are wrong. |
66 \todo Some cross-refs are wrong. |
68 |
67 |
69 The graph structures themselves can not store data attached |
68 The graph structures themselves can not store data attached |