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:

  1. The sub graph of induced by is strongly connected. That is, for every there is a directed path from to in .

  2. We have that .

  3. 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

  1. states that the maximum incoming and outgoing flow into is
  2. 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

  1. Choose one Vertex in .
  2. Push all the flow from to .
  3. Push all the flow from to .

Algorithm

Input: , an empty flow

  1. Take

  2. 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 .

  3. 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