The residual graph is the algorithm's map of what can still change after some flow has already been sent. Forward residual arcs show unused capacity, while backward residual arcs show flow that can be canceled and rerouted. This lesson renders those derived arcs directly from the recomputed flow, because the residual graph is where the next augmenting path would have to live.

highlighted = computed this step

Forward residual

The final residual still has 1 unit of forward capacity from s to a. Forward residual capacity means there is still room to push more in the original direction on that arc. Why: residual capacity is capacity minus the flow already using the edge.

cf(s,a)=1c_f(s,a)=1
final residual212113sabt

Backward residual

The backward residual from a to s is 2. A backward residual arc is not an original pipe; it is the option to cancel part of a previous choice. Why: a later augmenting path may need to reroute flow, and cancellation is how the exact algorithm keeps earlier pushes from becoming irreversible mistakes.

cf(a,s)=2c_f(a,s)=2
final residual212113sabt

Undo capacity

The backward residual from t to b is 3. Every unit sent on b to t creates the same amount of undo capacity in the reverse direction. Why: the residual graph records both remaining pushable capacity and the legal ways to revise the current flow without breaking conservation.

cf(t,b)=3c_f(t,b)=3
final residual212113sabt

Diagram note

Residual labels are recomputed from final flow values; backward arcs are derived, not authored input edges. The residual graph is the algorithm's decision surface: if it contains a source-to-sink route, the flow can still improve. Pixel positions are rounded for layout; every number shown is exact.

residual graph encodes remaining choices\text{residual graph encodes remaining choices}
final residual212113sabt