Linear programming formulation

Linear programming formulation of Ford-Fulkerson algorithm is given by expressing the maximum flow from a source node $s$ to a sink node $t$ as a linear program. The dual of this program yields a minimum cut value linear program and strong duality establishes the Ford-Fulkerson theorem.

Notation

 * Given a directed graph $G(V,E)$ with capacities $c_{ij}$ on its edges $(i,j)\in E$, a flow $f$ is an assignment of positive real values $f_{ij}$ to all edges $(i,j)$ of graph $G$ in such a way that they satisfy the following two properties:
 * Capacity constraints: value of $f_{i,j}$ assigned to each edge $(i,j)$ has a value at most equal to the capacity of that edge; i.e., for all edges $e\in E$, we have that $f_{ij}\leq c_{ij}$.
 * Conservation law: at each vertex $i$ of graph $G$ except the source node and the sink node ($s$ and $t$), the total flow going out is equal to the total flow coming in; i.e., for all vertices $i\in V\backslash\{s,t\}$ we have that $\sum_{j:\ (i,j)\in E}f_{ij}=\sum_{k:\ (k,i)\in E}f_{ki}$.

Adding a virtual arc of infinite capacity from the sink node $t$ to the source node $s$, the conservation law gets the simpler form of $\sum_{j:\ (k,i)\in E}f_{ki}\leq \sum_{j:\ (i,j)\in E}f_{ij}$.

Maximum flow problem
The maximum flow from the source node $s$ to the sink node $t$ is given by \begin{eqnarray} &&\text{maximize} f_{ts}\\ &&\text{subject to}\\ &&f_{ij}\leq c_{ij}\quad \text{for all }(i,j)\in E\\ &&\sum_{k:\ (k,i)\in E}f_{ki}\leq \sum_{j:\ (i,j)\in E}f_{ij}\quad \text{for all }i\in V\\ && f_{ij}\geq 0\quad \text{for all }(i,j)\in E \end{eqnarray}

Dual program
The dual program of the above maximization program is given by \begin{eqnarray} &&\text{minimize} \sum_{(i,j)\in E} c_{ij}d_{ij}\\ &&\text{subject to}\\ && d_{ij} − p_i + p_j \geq 0\quad \text{for all } (i,j)\in E\\ &&p_s − p_t \geq 1\\ &&d_{ij}\geq 0\quad \text{for all } (i,j)\in E\\ \end{eqnarray} By strong duality, the maximum flow from $s$ to $t$ is given by the solution of the above minimization problem which could be shown to be the minimum value of the cut separating nodes $s$ and $t$.