Summary
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.
Similar content being viewed by others
Abbreviations
- 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
- c(e):
-
the capacity of a (small) edge in the layered network
- c(ê):
-
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
- excess(υ):
-
\(\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)
- f(e):
-
the flow in the edge e
- front layer of SL i :
-
the layer in SL i closest to t
- in(υ):
-
the list of edges that enter υ in the layered network
- junction:
-
a vertex in FOREST i
- ℓ i :
-
the number of the calls to PUSH(i)
- LIST(ê):
-
the list of the small edges on the path corresponding to a big edge ê
- LIST(û):
-
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
- micropush:
-
a push of flow from a microsource
- microsource:
-
an open vertex that becomes positive during BALANCE(i)
- newflow(e):
-
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
- out(υ):
-
the list of edges that leave υ in the layered network
- positive vertex:
-
a vertex υ, υ ≠ t, with excess (υ)>0
- pushnumber(υ):
-
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
- superlayer:
-
the part of the layered network between two consecutive special layers
- totalflow(e):
-
f(e) + oldflow (ê) + newflow (ê), if e ε LIST (ê) and f(e) otherwise
- verynewflow(e):
-
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
References
Adelson-Velsky GM, Dinic EA, Karzanov AV (1975) Flow algorithms, (in Russian). Nauka, Moscow
Aho AV, Hopcroft JE, Ullman JD (1974) The design and analysis of computer algorithms. Reading, Mass Addison-Wesley
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
Dinic EA (1970) Algorithm for solution of a problem of maximal flow in a network with power estimation. Soviet Math Dokl 11: 1277–1280
Edmonds J, Karp RM (1972) Theoretical improvement in algorithmic efficiency for network flow problems. JCAM 19: 248–264
Even S (1976) The max-flow algorithm of Dinic and Karzanov: An exposition, MIT, LCS, TM-80
Ford LR, Fulkerson DR (1962) Flows in networks. Princeton University Press, New Jersey
Ford LR, Fulkerson DR (1956) Maximal flows through a network. IRE Trans on Inform Theory, IT-2:117–119
Galil Z (1980) On the theoretical efficiency of various network flow algorithms. IBM Report, RC7320, September 1978, Theor Comput Sci (in press)
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
Karzanov AV (1974) Determining the maximal flow in a network by the method of preflows. Soviet Math Dokl 15:434–437
Knuth DE (1968) The art of computer programming. Vol 1 (Fundamental algorithms). Addison-Wesley Reading, Mass
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
Author information
Authors and Affiliations
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
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). https://doi.org/10.1007/BF00264254
Received:
Revised:
Issue Date:
DOI: https://doi.org/10.1007/BF00264254