Skip to main content

An O(V 5/3 E 2/3) algorithm for the maximal flow problem


A new algorithm for finding a maximal flow in a given network is presented. The algorithm runs in time O(V 5/3 E 2/3), where V and E are the number of the vertices and edges in the network.

This is a preview of subscription content, access via your institution.


balance a vertex υ :

reduce the flow in in (υ) until υ is balanced

balanced vertex:

a vertex υ with excess (υ) = 0

big edge:

an edge in FOREST which represents an open path in SL i


the capacity of a (small) edge in the layered network


the capacity of a big edge ê, which equals the minimal residual capacity of a small edge on the corresponding path

closed edge:

an edge that has been closed by the algorithm either because it became saturated or because it led to a closed vertex

closed vertex:

a vertex υ, υt, such that all edges in out (υ) are closed

degree(\(\hat \upsilon \)):

the number of big edges entering a junction \(\hat \upsilon \)


a doubly linked list containing all edges e in in(υ) with newflow (e)>0


\(\sum\limits_{e \in in(\upsilon )} {f(e) - } \sum\limits_{e \in out(\upsilon )} {f(e)} \)

excess (\(\hat \upsilon \)):

the sum of newflow (ê) for ê in LIST (\(\hat \upsilon \)) minus newflow of the big edge that leaves \(\hat \upsilon \). (The corresponding term for êoldflow's is zero)


the flow in the edge e

front layer of SL i :

the layer in SL i closest to t


the list of edges that enter υ in the layered network


a vertex in FOREST i

i :

the number of the calls to PUSH(i)


the list of the small edges on the path corresponding to a big edge ê


the list of the big edges entering a junction û

list j :

the list of big edges in FOREST i which start at V j

m :

the number of special vertices

m i :

the number of vertices in the rear layer of SL i

marked vertex:

a vertex on a path that corresponds to a big edge


a push of flow from a microsource


an open vertex that becomes positive during BALANCE(i)


the total flow increment in a (small) edge e = (u, υ) in SL i since the last call to PUSH (i), that pushed flow into υ

newflow (ê):

the total flow increment in a big edge ê in FOREST i since the last call to PUSH(i)

open edge:

an edge that has not been closed by the algorithm; an open edge cannot be saturated and cannot lead to a closed vertex

open vertex υ :

a vertex υ such that either υ = t or there are open edges in out(υ)

open path:

a path consisting of open edges and open vertices


the list of edges that leave υ in the layered network

positive vertex:

a vertex υ, υt, with excess (υ)>0


the number of the last PUSH(i) that pushed flow into υ

rear layer of SL i :

the layer in SL i closest to s. Its vertices belong to SL i −1

saturated edge:

an edge e with f(e) = c(e)

SL i :

the i-th superlayer

small edge:

an edge in the layered network

special vertex:

a vertex in a special layer

special layer:

a layer chosen by the algorithm as special


the part of the layered network between two consecutive special layers


f(e) + oldflow (ê) + newflow (ê), if e ε LIST (ê) and f(e) otherwise


part of newflow (ê) used for balancing junctions; modified like newflow (ê) except for the case when it is set to zero when a big edge below it is deleted

V p :

the rear layer of SL i

V q :

the front layer of SL i

x :

the bound on the number of layers in a superlayer


  1. 1.

    Adelson-Velsky GM, Dinic EA, Karzanov AV (1975) Flow algorithms, (in Russian). Nauka, Moscow

    Google Scholar 

  2. 2.

    Aho AV, Hopcroft JE, Ullman JD (1974) The design and analysis of computer algorithms. Reading, Mass Addison-Wesley

    Google Scholar 

  3. 3.

    Cherkasky BV (1977) Algorithm of construction of maximal flow in networks with complexity of O(V E) operations (in Russian). Mathematical Methods of Solution of Economical Problems 7: 117–125

    Google Scholar 

  4. 4.

    Dinic EA (1970) Algorithm for solution of a problem of maximal flow in a network with power estimation. Soviet Math Dokl 11: 1277–1280

    MATH  Google Scholar 

  5. 5.

    Edmonds J, Karp RM (1972) Theoretical improvement in algorithmic efficiency for network flow problems. JCAM 19: 248–264

    Google Scholar 

  6. 6.

    Even S (1976) The max-flow algorithm of Dinic and Karzanov: An exposition, MIT, LCS, TM-80

  7. 7.

    Ford LR, Fulkerson DR (1962) Flows in networks. Princeton University Press, New Jersey

    Google Scholar 

  8. 8.

    Ford LR, Fulkerson DR (1956) Maximal flows through a network. IRE Trans on Inform Theory, IT-2:117–119

    Google Scholar 

  9. 9.

    Galil Z (1980) On the theoretical efficiency of various network flow algorithms. IBM Report, RC7320, September 1978, Theor Comput Sci (in press)

  10. 10.

    Galil Z, Naamad A (1980) Network flow and generalized path compression. Proceedings 11th Annual ACM Symposium on Theory of Computing, May 1979, 13–26. To appear in J Comput System Sci as: An O(EVlog2 V) algorithm for the maximal flow problem

  11. 11.

    Karzanov AV (1974) Determining the maximal flow in a network by the method of preflows. Soviet Math Dokl 15:434–437

    MATH  Google Scholar 

  12. 12.

    Knuth DE (1968) The art of computer programming. Vol 1 (Fundamental algorithms). Addison-Wesley Reading, Mass

    Google Scholar 

  13. 13.

    Malhotra VM, Pramodh Kumar M, Maheshwary SN (1978) An O(V 3) algorithm for finding the maximal flow in networks. Information Processing Lett 7:277–278

    Article  Google Scholar 

Download references

Author information



Additional information

We use the notation A = 0(B) [A = Ω(B)] for A ≦ cB [A ≧ cB], and A = θ(B) for c 1 B≦A ≦ c 2 B where c, c 1and c 2are positive constants. (The same constants for all the occurrences of this notation)

Rights and permissions

Reprints and Permissions

About this article

Cite this article

Galil, Z. An O(V 5/3 E 2/3) algorithm for the maximal flow problem. Acta Informatica 14, 221–242 (1980).

Download citation


  • Information System
  • Operating System
  • Data Structure
  • Communication Network
  • Information Theory