Maximum Flow algorithms
[Algorithms]


Detailed Description

This group describes the algorithms for finding maximum flows and feasible circulations.

The maximum flow problem is to find a flow between a single source and a single target that is maximum. Formally, there is a $G=(V,A)$ directed graph, an $c_a:A\rightarrow\mathbf{R}^+_0$ capacity function and given $s, t \in V$ source and target node. The maximum flow is the $f_a$ solution of the next optimization problem:

\[ 0 \le f_a \le c_a \]

\[ \sum_{v\in\delta^{-}(u)}f_{vu}=\sum_{v\in\delta^{+}(u)}f_{uv} \qquad \forall u \in V \setminus \{s,t\}\]

\[ \max \sum_{v\in\delta^{+}(s)}f_{uv} - \sum_{v\in\delta^{-}(s)}f_{vu}\]

LEMON contains several algorithms for solving maximum flow problems:

In most cases the Preflow algorithm provides the fastest method to compute the maximum flow. All impelementations provides functions to query the minimum cut, which is the dual linear programming problem of the maximum flow.


Files

file  circulation.h
 Push-prelabel algorithm for finding a feasible circulation.
file  dinitz_sleator_tarjan.h
 Implementation the dynamic tree data structure of Sleator and Tarjan.
file  edmonds_karp.h
 Implementation of the Edmonds-Karp algorithm.
file  goldberg_tarjan.h
 Implementation of the preflow algorithm.
file  preflow.h
 Implementation of the preflow algorithm.

Classes

class  Circulation
 Push-relabel algorithm for the Network Circulation Problem. More...
class  DinitzSleatorTarjan
 Dinitz-Sleator-Tarjan algorithms class. More...
class  EdmondsKarp
 Edmonds-Karp algorithms class. More...
class  GoldbergTarjan
 Goldberg-Tarjan algorithms class. More...
class  Preflow
 Preflow algorithms class. More...


Generated on Sat Apr 19 14:16:56 2008 for LEMON by  doxygen 1.5.5