0% found this document useful (0 votes)
72 views3 pages

26 Push Relabel Algorithm 20-03-2024

The push relabel algorithm is used to calculate maximum flow in a flow network. It models flow as water moving from a source at the highest height to a sink at the lowest height. Vertices can push excess flow to lower height neighbors or be relabeled to a higher height if locally trapped. The algorithm runs in O(V^2E) time, more efficiently than Ford-Fulkerson. It initializes heights and excess flows, then performs push or relabel operations until all excesses are zero, returning the maximum flow.

Uploaded by

KBS Srikar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
72 views3 pages

26 Push Relabel Algorithm 20-03-2024

The push relabel algorithm is used to calculate maximum flow in a flow network. It models flow as water moving from a source at the highest height to a sink at the lowest height. Vertices can push excess flow to lower height neighbors or be relabeled to a higher height if locally trapped. The algorithm runs in O(V^2E) time, more efficiently than Ford-Fulkerson. It initializes heights and excess flows, then performs push or relabel operations until all excesses are zero, returning the maximum flow.

Uploaded by

KBS Srikar
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 3

PUSH RELABEL ALGORITHM

Push relabel algorithm is also known as Preflow Push algorithm. It is used for computing
maximum flows in a flow network.

Maximum flow in a network graph

In a network graph where every edge has a given capacity, maximum flow is defined as the
maximum amount of flow that can move from source to sink. Maximum flow is calculated
keeping in mind two constraints,

For every vertex (except source and sink), incoming flow is equal to outgoing flow.

Flow of an edge shouldn't exceed its capacity.

Conceptual framework

The idea behind the algorithm is that the edges act as pipes and vertices act as joints and the
water flows from a high height to a low height. Every node is assigned a height variable. The
source is considered to be at the highest height |V| and sink is at the lowest height 0.

Push operation

Every vertex is also assigned another variable excess flow. When a vertex has an excess flow,
it pushes it to a lower height vertex. The amount of flow pushed is equal to the minimum of
excess flow of vertex and capacity of connecting edge.
Excess flow at a vertex V is defined by: Total flow received by V - Total flow going out of
V.

Relabel operation
If the height of a vertex is low and the water is overflowing in that vertex, i.e the water gets
locally trapped, then it's relabled. In a relabel operation, the height of the vertex is increased.

Pseudocode
We initialise the graph with height of source vertex as V. The height and excess flow of all
the other vertices as 0. We keep of performing push and relabel till the excess flow at all the
vertices (except source and sink) is zero.

Initialise height of all the vertices as 0


Initialise Height of source = V

Initialise excess flow of all the vertices as 0


For all neighbouring vertices of source node:
Flow and excess flow = capacity of the connecting source-neighbour edge

While there is a vertex with excess flow:


Perform push or relabel

At the end all the vertices should have 0 excess flow


Return maximum flow

Initialise height of all the vertices as 0

Time complexity
Push relabel algorithm calculates maximum flow in O(V2E) time where V is the number of
vertices and E is the number of edges in the network. It is more efficient that Ford
Fulkerson's algorithm

Initialise excess flow of all the vertices as 0


For all neighbouring vertices of source node:
Flow and excess flow = capacity of the connecting source-neighbour edge

While there is a vertex with excess flow:


Perform push or relabel

At the end all the vertices should have 0 excess flow


Return maximum flow

You might also like