This is to solidify and simplify what we have said in the
class. Some of the things

I did not present correctly, and I apologise for that. Because
of that, in the question

7. Exercise 27.2-2, you only have to show the
series of augmenting paths, and the grading will be lenient.

The algorithm calculates the max-flow of a directed graph G(V,E).

The abstract description (F-F algorithm) :

1. Intialize flows to zero.

2. While there is an augmenting path

3. do augment flow as much
as legally possible

More detailed description on selecting paths.

**Approach
1:**

We can solve a max-flow problem executing the F-F algorithm in the
initial network G(V,E).

An augmenting path is a path that consists of edges

a) ...u -> v... (along the direction we traverse
the path)

and c(u,v) - f(u, v) > 0, and

the residual capacity c_f(u,v) = c(u,v) - f(u, v)
is the amount

that we can increase the flow on that edge.

b) ...u <- v .... (on the opposite from the direction we traverse
the path)

and the residual flow is infinite,

which means that we can allocate an infitely large negative flow.

Having found the path, I push the maximum flow I can, which is the minimum of all the residual flows I can find.

**Approach 2:**

We can solve the max-flow problem using the residual graph G_f.

Intuitively, the idea of G_f, is a graph that has only one number
per edge to simplify our searching for an augmenting path.

** Attention
1**: in the residual graph, we allow only **positive** net flows.

The residual graph is defined as:

G_f = G

E_f = { (u,v) in VxV: c_f(u,v) > 0 }

** Attention 2: **
E_f may have more edges than E!!!!!!

Example: consider edge : u ----> v
with capacity 15 and zero flow initially.

When I route flow say of 5 untis, my edge becomes:

u----->v 5/15

In the residual graph, this corresponds to two edges with residual
capacities:

u -----> v 10 = 15 -5

u <----- v 5 = 0- (-5)

0 is the capacity the edge u<---v in G, since
in G it does not exist

-5 is the flow of the edge u<---v in G (recall
the skew symmetry constraint)

Intuitvely, u<---v with residual capacity 5, means that: now
u sends 5 units to v, so if I stop sending them, it is as if I send 5 units
from v to u and the two sets of units cancel each other.

In finding an augmenting path in G_f, I look for paths in G_f
with edges **in the direction that I am traversing them** i. I.e. I
only have edges

s ---> ...... ---> u -----> v ---> .... ---->
t

10

or

s ---> ...... ---> v -----> u ---> .... ---->
t

5

I hope these explanations help. If something is unclear, please let me know.