12 The implementation of combinatorial algorithms heavily relies on |
12 The implementation of combinatorial algorithms heavily relies on |
13 efficient graph implementations. LEMON offers data structures which are |
13 efficient graph implementations. LEMON offers data structures which are |
14 planned to be easily used in an experimental phase of implementation studies, |
14 planned to be easily used in an experimental phase of implementation studies, |
15 and thereafter the program code can be made efficient by small modifications. |
15 and thereafter the program code can be made efficient by small modifications. |
16 |
16 |
17 The most efficient implementation of diverse applications require the usage of different physical graph implementations. These differences appear in the size of |
17 The most efficient implementation of diverse applications require the |
18 graph we require to handle, memory or time usage limitations or in |
18 usage of different physical graph implementations. These differences |
19 the set of operations through which the graph can be accessed. |
19 appear in the size of graph we require to handle, memory or time usage |
20 LEMON provides several physical graph structures to meet the |
20 limitations or in the set of operations through which the graph can be |
21 diverging requirements of the possible users. |
21 accessed. LEMON provides several physical graph structures to meet |
22 In order to save on running time or on memory usage, some structures may |
22 the diverging requirements of the possible users. In order to save on |
23 fail to provide some graph features like edge or node deletion. |
23 running time or on memory usage, some structures may fail to provide |
|
24 some graph features like edge or node deletion. |
24 |
25 |
25 Alteration of standard containers need a very limited number of |
26 Alteration of standard containers need a very limited number of |
26 operations, these together satisfy the everyday requirements. |
27 operations, these together satisfy the everyday requirements. |
27 In the case of graph strutures, different operations are needed which do |
28 In the case of graph strutures, different operations are needed which do |
28 not alter the physical graph, but gives another view. If some nodes or |
29 not alter the physical graph, but gives another view. If some nodes or |
74 \brief Tools to create new maps from existing ones |
75 \brief Tools to create new maps from existing ones |
75 |
76 |
76 Map adaptors are used to create "implicit" maps from other maps. |
77 Map adaptors are used to create "implicit" maps from other maps. |
77 |
78 |
78 Most of them are \ref lemon::concept::ReadMap "ReadMap"s. They can |
79 Most of them are \ref lemon::concept::ReadMap "ReadMap"s. They can |
79 make arithmetic oprerations between one or two maps (negation, scalig, |
80 make arithmetic oprerations between one or two maps (negation, scaling, |
80 addition, multiplication etc.) or e.g. convert a map to another one |
81 addition, multiplication etc.) or e.g. convert a map to another one |
81 of different Value type. |
82 of different Value type. |
82 */ |
83 */ |
83 |
84 |
84 /** |
85 /** |
85 @defgroup matrices Matrices |
86 @defgroup matrices Matrices |
86 @ingroup datas |
87 @ingroup datas |
87 \brief Two dimensional data storages. |
88 \brief Two dimensional data storages. |
88 |
89 |
89 Two dimensional |
90 Two dimensional data storages. |
90 data storages. |
91 */ |
91 */ |
92 |
92 |
93 /** |
|
94 @defgroup paths Path Structures |
|
95 @ingroup datas |
|
96 \brief Path structures implemented in LEMON. |
|
97 |
|
98 LEMON provides flexible data structures |
|
99 to work with paths. |
|
100 |
|
101 All of them have the same interface, especially they can be built or extended |
|
102 using a standard Builder subclass. This make is easy to have e.g. the Dijkstra |
|
103 algorithm to store its result in any kind of path structure. |
|
104 |
|
105 \sa lemon::concept::Path |
|
106 |
|
107 */ |
93 |
108 |
94 /** |
109 /** |
95 @defgroup auxdat Auxiliary Data Structures |
110 @defgroup auxdat Auxiliary Data Structures |
96 @ingroup datas |
111 @ingroup datas |
97 \brief Some data structures implemented in LEMON. |
112 \brief Some data structures implemented in LEMON. |
108 This group describes the tools that makes it easier to make graphs and |
123 This group describes the tools that makes it easier to make graphs and |
109 the maps that dynamically update with the graph changes. |
124 the maps that dynamically update with the graph changes. |
110 */ |
125 */ |
111 |
126 |
112 /** |
127 /** |
113 @defgroup galgs Graph Algorithms |
128 @defgroup algs Algorithms |
114 \brief This group describes the several graph algorithms |
129 \brief This group describes the several algorithms |
115 implemented in LEMON. |
130 implemented in LEMON. |
116 |
131 |
117 This group describes the several graph algorithms |
132 This group describes the several algorithms |
118 implemented in LEMON. |
133 implemented in LEMON. |
119 */ |
134 */ |
120 |
135 |
121 /** |
136 /** |
122 @defgroup gutils General Graph Utilities |
137 @defgroup gutils General Graph Utilities |
123 @ingroup galgs |
138 @ingroup algs |
124 \brief This group describes some simple general graph utilities. |
139 \brief This group describes some simple general graph utilities. |
125 |
140 |
126 This group describes some simple general graph utilities. |
141 This group describes some simple general graph utilities. |
|
142 */ |
|
143 |
|
144 /** |
|
145 @defgroup flowalgs Path and Flow Algorithms |
|
146 @ingroup algs |
|
147 \brief This group describes the algorithms |
|
148 for finding paths and flows in graphs. |
|
149 |
|
150 This group describes the algorithms |
|
151 for finding paths and flows in graphs. |
|
152 |
|
153 \image html flow.png |
|
154 \image latex flow.eps "Graph flow" width=\textwidth |
|
155 */ |
|
156 |
|
157 /** |
|
158 @defgroup topology Topology related algorithms |
|
159 @ingroup algs |
|
160 \brief This group describes the algorithms |
|
161 for discover the topology of the graphs. |
|
162 |
|
163 This group describes the algorithms |
|
164 for discover the topology of the graphs. |
|
165 |
|
166 \image html edge_biconnected_components.png |
|
167 \image latex edge_biconnected_components.eps "bi-edge-connected components" width=\textwidth |
|
168 |
|
169 */ |
|
170 |
|
171 /** |
|
172 @defgroup matching Matching algorithms in graphs and bipartite graphs |
|
173 @ingroup algs |
|
174 \brief This group describes the algorithms |
|
175 for find matchings in graphs and bipartite graphs. |
|
176 |
|
177 This group provides some algorithm objects and function |
|
178 to calculate matchings in graphs and bipartite graphs. |
|
179 |
|
180 \image html bipartite_matching.png |
|
181 \image latex bipartite_matching.eps "Bipartite Matching" width=\textwidth |
|
182 |
|
183 */ |
|
184 |
|
185 /** |
|
186 @defgroup spantree Minimum Cost Spanning Tree Algorithms |
|
187 @ingroup algs |
|
188 \brief This group containes the algorithms for finding a minimum cost spanning |
|
189 tree in a graph |
|
190 |
|
191 This group containes the algorithms for finding a minimum cost spanning |
|
192 tree in a graph |
|
193 */ |
|
194 |
|
195 |
|
196 /** |
|
197 @defgroup auxalg Auxiliary Algorithms |
|
198 @ingroup algs |
|
199 \brief Some algorithms implemented in LEMON. |
|
200 |
|
201 This group describes the algorithms in LEMON in order to make |
|
202 it easier to implement complex algorithms. |
|
203 |
127 */ |
204 */ |
128 |
205 |
129 /** |
206 /** |
130 @defgroup gen_opt_group General Optimization Tools |
207 @defgroup gen_opt_group General Optimization Tools |
131 \brief This group describes some general optimization frameworks |
208 \brief This group describes some general optimization frameworks |
132 implemented in LEMON. |
209 implemented in LEMON. |
133 |
210 |
134 This group describes some general optimization frameworks |
211 This group describes some general optimization frameworks |
135 implemented in LEMON. |
212 implemented in LEMON. |
136 |
213 |
137 */ |
|
138 |
|
139 /** |
|
140 @defgroup flowalgs Path and Flow Algorithms |
|
141 @ingroup galgs |
|
142 \brief This group describes the algorithms |
|
143 for finding paths and flows in graphs. |
|
144 |
|
145 This group describes the algorithms |
|
146 for finding paths and flows in graphs. |
|
147 |
|
148 \image html flow.png |
|
149 \image latex flow.eps "Graph flow" width=\textwidth |
|
150 */ |
|
151 |
|
152 /** |
|
153 @defgroup topology Topology related algorithms |
|
154 @ingroup galgs |
|
155 \brief This group describes the algorithms |
|
156 for discover the topology of the graphs. |
|
157 |
|
158 This group describes the algorithms |
|
159 for discover the topology of the graphs. |
|
160 |
|
161 \image html edge_biconnected_components.png |
|
162 \image latex edge_biconnected_components.eps "bi-edge-connected components" width=\textwidth |
|
163 |
|
164 */ |
|
165 |
|
166 /** |
|
167 @defgroup matching Matching algorithms in graphs and bipartite graphs |
|
168 @ingroup galgs |
|
169 \brief This group describes the algorithms |
|
170 for find matchings in graphs and bipartite graphs. |
|
171 |
|
172 This group provides some algorithm objects and function |
|
173 to calculate matchings in graphs and bipartite graphs. |
|
174 |
|
175 \image html bipartite_matching.png |
|
176 \image latex bipartite_matching.eps "Bipartite Matching" width=\textwidth |
|
177 |
|
178 */ |
|
179 |
|
180 /** |
|
181 @defgroup exceptions Exceptions |
|
182 This group contains the exceptions thrown by LEMON library |
|
183 */ |
214 */ |
184 |
215 |
185 /** |
216 /** |
186 @defgroup misc Miscellaneous Tools |
217 @defgroup misc Miscellaneous Tools |
187 Here you can find several useful tools for development, |
218 Here you can find several useful tools for development, |
195 of algorithms. |
226 of algorithms. |
196 */ |
227 */ |
197 |
228 |
198 /** |
229 /** |
199 @defgroup io_group Input-Output |
230 @defgroup io_group Input-Output |
200 Here you can find tools for imporing and exporting graphs and graph related |
231 \brief Several Graph Input-Output methods |
201 data |
232 |
|
233 Here you can find tools for importing and exporting graphs |
|
234 and graph related data. Now it supports the LEMON format, the |
|
235 dimacs format and the encapsulated postscript format. |
|
236 */ |
|
237 |
|
238 /** |
|
239 @defgroup lemon_io Lemon Input-Output |
|
240 @ingroup io_group |
|
241 \brief Reading and writing LEMON format |
|
242 |
|
243 Methods for reading and writing LEMON format. More about this |
|
244 format you can find on the \ref graph-io-page "Graph Input-Output" |
|
245 tutorial pages. |
|
246 |
202 */ |
247 */ |
203 |
248 |
204 /** |
249 /** |
205 @defgroup section_io Section readers and writers |
250 @defgroup section_io Section readers and writers |
206 @ingroup io_group |
251 @ingroup lemon_io |
207 \brief Section readers and writers for lemon Input-Output. |
252 \brief Section readers and writers for lemon Input-Output. |
208 |
253 |
209 Here you can find which section readers and writers can attach to |
254 Here you can find which section readers and writers can attach to |
210 the LemonReader and LemonWriter. |
255 the LemonReader and LemonWriter. |
211 */ |
256 */ |
212 |
257 |
213 /** |
258 /** |
214 @defgroup item_io Item Readers and Writers |
259 @defgroup item_io Item Readers and Writers |
215 @ingroup io_group |
260 @ingroup lemon_io |
216 \brief Item readers and writers for lemon Input-Output. |
261 \brief Item readers and writers for lemon Input-Output. |
217 |
262 |
218 The Input-Output classes can handle more data type by example |
263 The Input-Output classes can handle more data type by example |
219 as map or attribute value. Each of these should be written and |
264 as map or attribute value. Each of these should be written and |
220 read some way. The module make possible to do this. |
265 read some way. The module make possible to do this. |
221 */ |
266 */ |
222 |
267 |
223 /** |
268 /** |
|
269 @defgroup eps_io Postscript exporting |
|
270 @ingroup io_group |
|
271 \brief General EPS drawer and graph exporter |
|
272 |
|
273 This group contains general EPS drawing methods and special |
|
274 graph exporting tools. |
|
275 */ |
|
276 |
|
277 /** |
|
278 @defgroup exceptions Exceptions |
|
279 This group contains the exceptions thrown by LEMON library |
|
280 */ |
|
281 |
|
282 /** |
224 @defgroup concept Concepts |
283 @defgroup concept Concepts |
225 \brief Skeleton classes and concept checking classes |
284 \brief Skeleton classes and concept checking classes |
226 |
285 |
227 This group describes the data/algorithm skeletons and concept checking |
286 This group describes the data/algorithm skeletons and concept checking |
228 classes implemented in LEMON. |
287 classes implemented in LEMON. |