You have chosen to sponsor your bid up to a maximum amount of .
In this programming question we will implement the Ford-Fulkerson algorithm for computing the maximum flow in a network graph. The pseudo-code for the algorithm is given on slide 11. You are responsible for the computation of an augmenting path in the residual graph, AND to update the residual graph based on a given augmenting path. Some details on design choices you have to be aware of:
1. The residual graph consists of a directed graph with a "residual" value on each edge. This residual is the maximum amout of flow that can be pushed through the edge (i.e. for a forward edge, residual = capacity - flow, and for a backward edge residual = flow).
2. For every edge, we keep a pointer to the opposite edge, which you will find useful in updating the residual graph.
Last but not least, you are also responsible for testing your code. Please provide a sensible additional input network graph and make sure your algorithm works on it. It should have 7-10. The package online has two networks: the small "Heisenberg network" that we've seen in the first lecture on network flow, and the bipartite matching reduction.