216 | | @defgroup max_flow Maximum Flow algorithms |
217 | | @ingroup algs |
218 | | \brief Algorithms for finding maximum flows. |
219 | | |
220 | | This group describes the algorithms for finding maximum flows and |
221 | | feasible circulations. |
222 | | |
223 | | The maximum flow problem is to find a flow between a single source and |
224 | | a single target that is maximum. Formally, there is a \f$G=(V,A)\f$ |
225 | | directed graph, an \f$c_a:A\rightarrow\mathbf{R}^+_0\f$ capacity |
226 | | function and given \f$s, t \in V\f$ source and target node. The |
227 | | maximum flow is the \f$f_a\f$ solution of the next optimization problem: |
228 | | |
229 | | \f[ 0 \le f_a \le c_a \f] |
230 | | \f[ \sum_{v\in\delta^{-}(u)}f_{vu}=\sum_{v\in\delta^{+}(u)}f_{uv} |
231 | | \qquad \forall u \in V \setminus \{s,t\}\f] |
232 | | \f[ \max \sum_{v\in\delta^{+}(s)}f_{uv} - \sum_{v\in\delta^{-}(s)}f_{vu}\f] |
233 | | |
234 | | LEMON contains several algorithms for solving maximum flow problems: |
235 | | - \ref lemon::EdmondsKarp "Edmonds-Karp" |
236 | | - \ref lemon::Preflow "Goldberg's Preflow algorithm" |
237 | | - \ref lemon::DinitzSleatorTarjan "Dinitz's blocking flow algorithm with dynamic trees" |
238 | | - \ref lemon::GoldbergTarjan "Preflow algorithm with dynamic trees" |
239 | | |
240 | | In most cases the \ref lemon::Preflow "Preflow" algorithm provides the |
241 | | fastest method to compute the maximum flow. All impelementations |
242 | | provides functions to query the minimum cut, which is the dual linear |
243 | | programming problem of the maximum flow. |
244 | | |
245 | | */ |
246 | | |
247 | | /** |
248 | | @defgroup min_cost_flow Minimum Cost Flow algorithms |
249 | | @ingroup algs |
250 | | |
251 | | \brief Algorithms for finding minimum cost flows and circulations. |
252 | | |
253 | | This group describes the algorithms for finding minimum cost flows and |
254 | | circulations. |
255 | | */ |
256 | | |
257 | | /** |
258 | | @defgroup min_cut Minimum Cut algorithms |
259 | | @ingroup algs |
260 | | |
261 | | \brief Algorithms for finding minimum cut in graphs. |
262 | | |
263 | | This group describes the algorithms for finding minimum cut in graphs. |
264 | | |
265 | | The minimum cut problem is to find a non-empty and non-complete |
266 | | \f$X\f$ subset of the vertices with minimum overall capacity on |
267 | | outgoing arcs. Formally, there is \f$G=(V,A)\f$ directed graph, an |
268 | | \f$c_a:A\rightarrow\mathbf{R}^+_0\f$ capacity function. The minimum |
269 | | cut is the \f$X\f$ solution of the next optimization problem: |
270 | | |
271 | | \f[ \min_{X \subset V, X\not\in \{\emptyset, V\}} |
272 | | \sum_{uv\in A, u\in X, v\not\in X}c_{uv}\f] |
273 | | |
274 | | LEMON contains several algorithms related to minimum cut problems: |
275 | | |
276 | | - \ref lemon::HaoOrlin "Hao-Orlin algorithm" to calculate minimum cut |
277 | | in directed graphs |
278 | | - \ref lemon::NagamochiIbaraki "Nagamochi-Ibaraki algorithm" to |
279 | | calculate minimum cut in undirected graphs |
280 | | - \ref lemon::GomoryHuTree "Gomory-Hu tree computation" to calculate all |
281 | | pairs minimum cut in undirected graphs |
282 | | |
283 | | If you want to find minimum cut just between two distinict nodes, |
284 | | please see the \ref max_flow "Maximum Flow page". |
285 | | |
286 | | */ |
287 | | |
288 | | /** |
289 | | @defgroup graph_prop Connectivity and other graph properties |
290 | | @ingroup algs |
291 | | \brief Algorithms for discovering the graph properties |
292 | | |
293 | | This group describes the algorithms for discovering the graph properties |
294 | | like connectivity, bipartiteness, euler property, simplicity etc. |
295 | | |
296 | | \image html edge_biconnected_components.png |
297 | | \image latex edge_biconnected_components.eps "bi-edge-connected components" width=\textwidth |
298 | | */ |
299 | | |
300 | | /** |
301 | | @defgroup planar Planarity embedding and drawing |
302 | | @ingroup algs |
303 | | \brief Algorithms for planarity checking, embedding and drawing |
304 | | |
305 | | This group describes the algorithms for planarity checking, |
306 | | embedding and drawing. |
307 | | |
308 | | \image html planar.png |
309 | | \image latex planar.eps "Plane graph" width=\textwidth |
310 | | */ |
311 | | |
312 | | /** |
313 | | @defgroup matching Matching algorithms |
314 | | @ingroup algs |
315 | | \brief Algorithms for finding matchings in graphs and bipartite graphs. |
316 | | |
317 | | This group contains algorithm objects and functions to calculate |
318 | | matchings in graphs and bipartite graphs. The general matching problem is |
319 | | finding a subset of the arcs which does not shares common endpoints. |
320 | | |
321 | | There are several different algorithms for calculate matchings in |
322 | | graphs. The matching problems in bipartite graphs are generally |
323 | | easier than in general graphs. The goal of the matching optimization |
324 | | can be the finding maximum cardinality, maximum weight or minimum cost |
325 | | matching. The search can be constrained to find perfect or |
326 | | maximum cardinality matching. |
327 | | |
328 | | LEMON contains the next algorithms: |
329 | | - \ref lemon::MaxBipartiteMatching "MaxBipartiteMatching" Hopcroft-Karp |
330 | | augmenting path algorithm for calculate maximum cardinality matching in |
331 | | bipartite graphs |
332 | | - \ref lemon::PrBipartiteMatching "PrBipartiteMatching" Push-Relabel |
333 | | algorithm for calculate maximum cardinality matching in bipartite graphs |
334 | | - \ref lemon::MaxWeightedBipartiteMatching "MaxWeightedBipartiteMatching" |
335 | | Successive shortest path algorithm for calculate maximum weighted matching |
336 | | and maximum weighted bipartite matching in bipartite graph |
337 | | - \ref lemon::MinCostMaxBipartiteMatching "MinCostMaxBipartiteMatching" |
338 | | Successive shortest path algorithm for calculate minimum cost maximum |
339 | | matching in bipartite graph |
340 | | - \ref lemon::MaxMatching "MaxMatching" Edmond's blossom shrinking algorithm |
341 | | for calculate maximum cardinality matching in general graph |
342 | | - \ref lemon::MaxWeightedMatching "MaxWeightedMatching" Edmond's blossom |
343 | | shrinking algorithm for calculate maximum weighted matching in general |
344 | | graph |
345 | | - \ref lemon::MaxWeightedPerfectMatching "MaxWeightedPerfectMatching" |
346 | | Edmond's blossom shrinking algorithm for calculate maximum weighted |
347 | | perfect matching in general graph |
348 | | |
349 | | \image html bipartite_matching.png |
350 | | \image latex bipartite_matching.eps "Bipartite Matching" width=\textwidth |
351 | | |
352 | | */ |
353 | | |
354 | | /** |
361 | | */ |
362 | | |
363 | | |
364 | | /** |
365 | | @defgroup auxalg Auxiliary algorithms |
366 | | @ingroup algs |
367 | | \brief Auxiliary algorithms implemented in LEMON. |
368 | | |
369 | | This group describes some algorithms implemented in LEMON |
370 | | in order to make it easier to implement complex algorithms. |
371 | | */ |
372 | | |
373 | | /** |
374 | | @defgroup approx Approximation algorithms |
375 | | \brief Approximation algorithms. |
376 | | |
377 | | This group describes the approximation and heuristic algorithms |
378 | | implemented in LEMON. |
379 | | */ |
380 | | |
381 | | /** |
382 | | @defgroup gen_opt_group General Optimization Tools |
383 | | \brief This group describes some general optimization frameworks |
384 | | implemented in LEMON. |
385 | | |
386 | | This group describes some general optimization frameworks |
387 | | implemented in LEMON. |
388 | | |
389 | | */ |
390 | | |
391 | | /** |
392 | | @defgroup lp_group Lp and Mip solvers |
393 | | @ingroup gen_opt_group |
394 | | \brief Lp and Mip solver interfaces for LEMON. |
395 | | |
396 | | This group describes Lp and Mip solver interfaces for LEMON. The |
397 | | various LP solvers could be used in the same manner with this |
398 | | interface. |
399 | | |
400 | | */ |
401 | | |
402 | | /** |
403 | | @defgroup lp_utils Tools for Lp and Mip solvers |
404 | | @ingroup lp_group |
405 | | \brief Helper tools to the Lp and Mip solvers. |
406 | | |
407 | | This group adds some helper tools to general optimization framework |
408 | | implemented in LEMON. |
409 | | */ |
410 | | |
411 | | /** |
412 | | @defgroup metah Metaheuristics |
413 | | @ingroup gen_opt_group |
414 | | \brief Metaheuristics for LEMON library. |
415 | | |
416 | | This group describes some metaheuristic optimization tools. |