by Maarten Behn
Group 5
Exercise 6.1 (Flows in strongly connected networks) (10 Points)
Let be an s-t network with the following properties:
The sub graph of induced by is strongly connected. That is, for every there is a directed path from to in .
We have that .
For all , we have .
a) Prove that there exists a maximum flow in with .
b) Moreover, give an algorithm that computes such a flow in time .
a)
The maximum flow is never larger than B. → 2. Statement
Assumption
For every there is a Network
where we merge all vertices into .
therefore the maximum flow of is
The maximum flow is never smaller than the the maximum flow of .
Proof
- states that the maximum incoming and outgoing flow into is
- states that have an edge with capacity
therefore
This means that for every s-t-path an edge will never be the bottleneck edge.
because
we can merge all vertecies into and the maximum flow will not change.
The maximum flow of is .
b)
Idea
- Choose one Vertex in .
- Push all the flow from to .
- Push all the flow from to .
Algorithm
Input: , an empty flow
-
Take
-
Perform from to all neighbors of on the incoming edges of each Vertex.
When hitting a neighbor of set
When going back up an incoming edge of of Vertex
set . -
Perform from to all neighbors of on the outgoing edges of each Vertex.
When hitting a neighbor of set
When going going back up an outgoing edge of Vertex
set .
Proof the Algorithm computes a flow of
With the DFS in the second step we take all the flow from s and sum it up the tree till it is all pushed into .
With the DFS in the third step we take that flow from and split it down the DFS into neighbors of so that all edges to are satisfiyed.
Both DFS can at most push an flow of over an edge.
An edge in can never be a bottleneck edge because they have all a capacity of .
Runtime
Exercise 6.2 (The FIFO Preflow-Push Algorithm)
A FIFO (first-in first-out) queue is a data structure where elements are added (push) to the end of the queue and removed from the front (pop). Consider the following variant of the generic Preflow-Push algorithm:
Prove that the FIFO Algorithm computes a maximum flow in time , where
To do so, you can use the following hints:Split the execution of the algorithm into phases, where the Phase 1 is the processing of the neighbors of , Phase 2 is the processing of those vertices that are added to during Phase 1, Phase 3 is the processing of those vertices that are added to during Phase 2, and so on.
Your goal is to show that the number of non-saturating Push operation is in (why?).
Such a bound follows from the number of phases (why?).To analyze the number of phases, use the potential function . Moreover, distinguish between phases without any relabeling and phases with at least one relabeling.
So für den Fail noch ein Tipp zum bounden der Anzahl an Phases:
In einer Phase ohne Relabelings wird jeder zu Beginn der Phase aktive Knoten inaktiv. Da alle Pushes downward sind, bedeutet das, dass die Höhe der neu aktiv gewordenen Knoten wie ist?Und Phasen mit mindestens einem Relabel kann es höchstens wie viele geben?
Proof
From Lecture
The Corollary states that the number of Relabel operations is at most
The Lemma states that the number of saturating pushes is at most
is at most therefore it is bound by .
Goal
So we need to show that number of non-saturating Push operation is also
to show that the Algorithm has a runtime of .
Passes Idea
We can split the Algorithm into passes
The first pass is all the iterations where the initial neighbors of are popped.
The next pass is all the iterations where all the vertices are popped that where added in the last pass.
This is possible because is a FIFO Queue.
For an example how the interactions are split, see the example below.
Maximum number of Iterations
Every pass can contain at most iterations.
So we have to prove that there are at most passes.
Pass with no relabeling operation
If a pass contains no relabeling operation then all processed vertices in the pass are inactive after the pass and will therefore not be processed in the nex pass .
A push operation pushes from vertex to a vertex is only performed if
The maximum height a pass can be at most because the maximum possible height of a vertex is
So there can be at most passes containing no relabeling operation.
Pass with relabeling operation
The number of passes with a relabeling operation is at most because there can be at most relabel operations.
Conclusion
Therefore the number of Iterations is bound by
If the number of Iterations is bound by
then the number of non-saturating Push operation is also bound by .
the FIFO Algorithm computes a maximum flow in .
Example to understand the algorithm
Transclude of AA-UE-6.2.excalidraw
Init:
Phase: 1
1:
Discharge:
is active
is not eligible
is not eligible
Relabel
Push all active vertices into
2:
Discharge:
is active
is not eligible
Relabel
Push all active vertices into
Phase: 2
3:
Discharge:
is active
is eligible
Push
is not eligible
Push all active vertecies into
4:
Discharge:
is active
is not eligible
Relable
Push all active vertecies into
Phase: 3
5:
Discharge:
is active
is not eligible
Relabel
Push all active vertices into
6:
Discharge:
is active
is eligible
Push
Phase: 4
7:
Discharge:
is active
is eligilbe
Push
Push all active vertices into
done
Summary
- Phase 1
- relabel 1
- relabel 2
- Phase 2:
- push 1
- relabel 2
- Phase 3
- relabel 3
- push 2
- Phase: 4
- push 3





