07 Network Flow I
07 Network Flow I
07 Network Flow I
N ETWORK F LOW I
max-flow and min-cut problems
Ford-Fulkerson algorithm
max-flow min-cut theorem
capacity-scaling algorithm
shortest augmenting paths
blocking-flow algorithm
unit-capacity simple networks
Lecture slides by Kevin Wayne
Copyright 2005 Pearson-Addison Wesley
Copyright 2013 Kevin Wayne
http://www.cs.princeton.edu/~wayne/kleinberg-tardos
7. N ETWORK F LOW I
max-flow and min-cut problems
Ford-Fulkerson algorithm
max-flow min-cut theorem
capacity-scaling algorithm
shortest augmenting paths
blocking-flow algorithm
SECTION 7.1
Flow network
no parallel edges
no edge enters s
no edge leaves t
capacity
10
15
15
15
10
10
15
10
16
3
cap( A, B) =
c(e)
e out of A
10
15
capacity = 10 + 5 + 15 = 30
cap( A, B) =
c(e)
e out of A
10
t
don't count edges
from B to A
capacity = 10 + 8 + 16 = 34
16
5
cap( A, B) =
c(e)
e out of A
10
10
capacity = 10 + 8 + 10 = 28
For each e E :
For each v V {s, t} :
0 f (e) c(e)
f (e) = f (e)
e in to v
[capacity]
[flow conservation]
e out of v
capacity
flow
inflow at v = 5 + 5 + 0 = 10
outflow at v = 10 + 0
5/9
10
10
0/4
5/8
5/5
10
15
/1
5
0/4
/6
0 / 15
0 / 15
10
10 / 10
10
= 10
10
10 / 16
7
For each e E :
For each v V {s, t} :
0 f (e) c(e)
f (e) = f (e)
e in to v
[capacity]
[flow conservation]
e out of v
f ) f=) = f (e) .
Def. The value of aflow f is:v(val(
e out of s
5/9
10
10
0/4
15
0 / 15
5/8
5/5
10
/1
5
0/4
/6
10
10 / 10
0 / 15
10
10
value = 5 + 10 + 10 = 25
10 / 16
8
For each e E :
For each v V {s, t} :
0 f (e) c(e)
f (e) = f (e)
e in to v
[capacity]
[flow conservation]
e out of v
f ) f=) = f (e) .
Def. The value of aflow f is:v(val(
e out of s
8/9
10
10
0/4
15
0 / 15
8/8
5/5
13
/1
5
0/4
/6
10
10 / 10
0 / 15
10
10
value = 8 + 10 + 10 = 28
13 / 16
9
7. N ETWORK F LOW I
max-flow and min-cut problems
Ford-Fulkerson algorithm
max-flow min-cut theorem
capacity-scaling algorithm
shortest augmenting paths
blocking-flow algorithm
SECTION 7.1
flow
0/4
network G
capacity
10
0 / 10
0/2
/8
0/9
0/6
10
0 / 10
value of flow
11
0/4
network G
8
0
10
0 / 10
0/2
/8
0/9
0/6
10
0 / 10
0 +8=8
12
0/4
network G
10
10
0 / 10
2
0/2
/8
0/9
0/6
10
8 / 10
8 + 2 = 10
13
0/4
network G
10
10
0 / 10
2/2
/8
2/9
6
0/6
10
10 / 10
10 + 6 = 16
14
0/4
network G
10
10
6 / 10
2/2
/8
8/9
6/6
10
10 / 10
16
15
3/4
network G
10
10
9 / 10
0/2
/8
9/9
6/6
10
10 / 10
19
16
Residual graph
Original edge: e = (u, v) E.
Flow f (e).
Capacity c(e).
original graph G
6 / 17
u
flow
capacity
Residual edge.
c(e) f (e) if e E
c f (e) =
if e R E
f (e)
residual
capacity
residual graph Gf
11
Augmenting path
Def. An augmenting path is a simple st path P in the residual graph Gf .
Def. The bottleneck capacity of an augmenting P is the minimum
residual capacity of any edge in P.
Key property. Let f be a flow and let P be an augmenting path in Gf .
Then f ' is a flow and val( f ' ) = val( f ) + bottleneck(Gf, P).
AUGMENT (f, c, P)
________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
f (eR) f (eR) b.
RETURN f.
________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
18
Ford-Fulkerson algorithm
Ford-Fulkerson augmenting path algorithm.
19
network G
capacity
0/4
10
0/2
0 / 10
/8
0/6
10
0 / 10
0/9
value of flow
residual graph Gf
4
residual capacity
10
10
10
10
t
20
8
0
10
0/2
0 / 10
/8
0/6
10
0 / 10
0/9
0 +8=8
residual graph Gf
4
10
10
10
10
t
21
10
10
2
0/2
/8
0/6
10
8 / 10
0/9
0 / 10
8 + 2 = 10
residual graph Gf
4
10
10
2
8
t
22
10
10
2/2
0 / 10
/8
6
0/6
2/9
10
10 / 10
10 + 6 = 16
residual graph Gf
4
10
10
7
2
10
10
t
23
0/4
8
10
10
0
2/2
6 / 10
/8
6/6
10
10 / 10
8/9
16 + 2 = 18
residual graph Gf
4
6
10
10
t
24
2/4
10
10
0/2
8 / 10
/8
6/6
8/9
10
10 / 10
18 + 1 = 19
residual graph Gf
2
8
10
10
t
25
min cut
10
10
0/2
9 / 10
/8
6/6
max flow
10
10 / 10
9/9
19
residual graph Gf
1
9
1
9
10
t
26
7. N ETWORK F LOW I
max-flow and min-cut problems
Ford-Fulkerson algorithm
max-flow min-cut theorem
capacity-scaling algorithm
shortest augmenting paths
blocking-flow algorithm
SECTION 7.2
f (e) f (e) = v( f )
e out of A
e in to A
5/9
10
10
0/4
15
0 / 15
5/8
5/5
10
/1
5
0/4
/6
10
10 / 10
0 / 15
10
value of flow = 25
10
10 / 16
28
f (e) f (e) = v( f )
e out of A
e in to A
5/9
10
10
0/4
15
0 / 15
5/8
5/5
10
/1
5
0/4
/6
10
10 / 10
0 / 15
10
value of flow = 25
10
10 / 16
29
f (e) f (e) = v( f )
e out of A
e in to A
5/9
edges from B to A
10
10
0/4
15
0 / 15
5/8
5/5
10
/1
5
0/4
/6
10
10 / 10
0 / 15
10
value of flow = 25
10
10 / 16
30
f (e) f (e) = v( f )
e out of A
Pf.
e in to A
v( f ) =
v( f ) =
f (e)
of ssf (e)
ee out
out of
e out of s
=
=
f
(e)
f
(e)
f
(e)
f
(e)
of vv
to vv
ee out
vv
ee in
A
A
out of
in to
v A e out of v
e in to v
=
=
f (e) f (e).
of AAf (e) ee in
to AAf (e).
ee out
out of
in to
e out of A
e in to A
31
v(
ff ))
v(
v(
v( ff ))
Pf.
flow-value
lemma
ff (e)
ff (e)
(e)
(e)
f
(e)
(e)
e out
of Af (e) e in
to Aff (e)
ee out
of
A
ee in
to
A
out
of
A
in
to
A
e out of A
e in to A
f
(e)
f (e)
(e)
e out
of Aff (e)
ee out
of
A
e out
out of
of A
A
c(e)
c(e)
c(e)
c(e)
e out
of A
ee out
of
A
out
of
A
e out of A
cap(A,
B)
cap(A,
cap(A,
B)
cap(A, B)
B)
=
=
=
=
=
=
=
=
8/9
2
10
10
0/4
15
0 / 15
0/4
/6
10
9 / 10
7/8
5/5
12
/1
0 / 15
10
10
s
10
15
12 / 16
value of flow = 27
capacity of cut = 30
32
ii ]
by assumption
33
~ii.
34
i]
v( f ) =
f (e) f (e)
v( f ) = e outof Af (e) e into Af (e)
v( f ) = e outof Af (e) e into Af (e)
= e outof Ac(e) e in to A
flow-value
= e outof Ac(e)
lemma
= e outof Ac(e)
= cap(A,
e out of A B)
= cap(A, B)
= cap(A, B)
7. N ETWORK F LOW I
max-flow and min-cut problems
Ford-Fulkerson algorithm
max-flow min-cut theorem
capacity-scaling algorithm
shortest augmenting paths
blocking-flow algorithm
SECTION 7.3
Running time
Assumption. Capacities are integers between 1 and C.
Integrality invariant. Throughout the algorithm, the flow values f (e)
and the residual capacities cf (e) are integers.
Theorem. The algorithm terminates in at most val (f *) n C iterations.
Pf. Each augmentation increases the value by at least 1.
Corollary. The running time of Ford-Fulkerson is O(m n C).
Corollary. If C = 1, the running time of Ford-Fulkerson is O(m n).
Integrality theorem. Then exists a max-flow f * for which every
flow value f *(e) is an integer.
Pf. Since algorithm terminates, theorem follows from invariant.
37
svwt
swvt
svwt
swvt
svwt
swvt
38
39
M. K A R P
40
Capacity-scaling algorithm
Intuition. Choose augmenting path with highest bottleneck capacity:
it increases flow by max possible amount in given iteration.
0
11
11
2
10
2
10
0
17
17
Gf
12
2
12
Gf (), = 100
41
Capacity-scaling algorithm
CAPACITY-SCALING(G, s, t, c)
__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
42
43
Theorem. The scaling max-flow algorithm finds a max flow in O(m log C)
augmentations. It can be implemented to run in O(m2 log C) time.
Pf. Follows from LEMMA 1 and LEMMA 3.
44
val(
v( ff )) =
v( f )
v( f )
v( f )
=
=
=
=
f (e) f (e)
e out
of A f (e) e in
to A f (e)
e out
of A f (e) e in
to A f (e)
(c(e)
e out
of A f (e) e in
to A f (e)
e out
of A(c(e) ) e in
to A
e out of A
e in to A
e out
of A(c(e) ) e in
to A
c(e)
e out
of A(c(e) ) e in
to A
e out
of Ac(e) e out
of Ae intoeAinto A
e out of A
e out
of Ac(e) e out
of A e into A
cap(A,
B)
m
c(e)
of A e into A
e out
of A
e out
cap(A,
B)
m
e out of A
e out of A
e in to A
cap(A, B) - m
cap(A, B) - m
7. N ETWORK F LOW I
max-flow and min-cut problems
Ford-Fulkerson algorithm
max-flow min-cut theorem
capacity-scaling algorithm
shortest augmenting paths
blocking-flow algorithm
SECTION 17.2
SHORTEST-AUGMENTING-PATH(G, s, t, c)
_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
FOREACH e E : f (e) 0.
Gf residual graph.
WHILE (there exists an augmenting path in Gf )
P BREADTH-FIRST-SEARCH (Gf, s, t).
f AUGMENT (f, c, P).
Update Gf.
RETURN f.
_________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
47
48
LG = (V, EG) is the subgraph of G that contains only those edges (v,w) E
with (w) = (v) + 1.
graph G
level graph LG
= 0
= 1
= 2
= 3
49
LG = (V, EG) is the subgraph of G that contains only those edges (v,w) E
with (w) = (v) + 1.
Property. Can compute level graph in O(m + n) time.
Pf. Run BFS; delete back and side edges.
Key property. P is a shortest sv path in G iff P is an sv path LG.
level graph LG
= 0
= 1
= 2
= 3
50
Let f and f ' be flow before and after a shortest path augmentation.
Let L and L' be level graphs of Gf and Gf ' .
Only back edges added to Gf '
(any path with a back edge is longer than previous length)
level graph L
= 0
= 1
= 2
= 3
51
level graph L
= 0
= 1
= 2
= 3
52
53
OF COMPUTER
AND
SYSTEM
26, 362-391
SCIENCES
A Data Structure
DANIEL
(1983)
Bell Laboratories,
Received
Murray
May
8, 1982;
Hill,
revised
New Jersey
October
07974
18, 1982
A data structure
is proposed
to maintain
a collection
of vertex-disjoint
trees under a
sequence
of two kinds of operations:
a link operation
that combines
two trees into one by
adding an edge, and a cut operation
that divides one tree into two by deleting an edge. Each
operation
requires
O(log n) time. Using this data structure,
new fast algorithms
are obtained
for the following
problems:
(1)
Computing
(2)
Solving
flows, and acyclic
nearest
various
flows.
(3)
Computing
(4)
Implementing
The most
maximum
algorithm
common
network
certain
kinds
the network
ancestors.
flow
problems
of constrained
simplex
including
minimum
algorithm
finding
maximum
spanning
for minimum-cost
flows,
blocking
trees.
flows.
significant
application
is (2); an O(mn log n)-time
algorithm
is obtained
to find a
flow in a network
of n vertices and m edges, beating by a factor of log n the fastest
previously
known for sparse graphs.
1. INTR~DIJCTI~N
In this paper we consider the following
54
7. N ETWORK F LOW I
max-flow and min-cut problems
Ford-Fulkerson algorithm
max-flow min-cut theorem
capacity-scaling algorithm
shortest augmenting paths
blocking-flow algorithm
SECTION 18.1
Blocking-flow algorithm
Two types of augmentations.
t
level graph LG
56
Blocking-flow algorithm
Two types of augmentations.
t
level graph LG
57
Blocking-flow algorithm
Two types of augmentations.
t
level graph LG
58
Blocking-flow algorithm
Two types of augmentations.
t
level graph LG
59
Blocking-flow algorithm
Two types of augmentations.
t
level graph LG
60
Blocking-flow algorithm
Two types of augmentations.
t
level graph LG
61
Blocking-flow algorithm
Two types of augmentations.
t
level graph LG
62
Blocking-flow algorithm
Two types of augmentations.
t
level graph LG
63
Blocking-flow algorithm
Two types of augmentations.
t
level graph LG
64
Blocking-flow algorithm
Two types of augmentations.
t
level graph LG
65
Blocking-flow algorithm
Two types of augmentations.
t
level graph LG
66
Blocking-flow algorithm
INITIALIZE(G, s, t, f, c)
ADVANCE(v)
_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
LG level-graph of Gf.
IF
(v = t)
P .
AUGMENT(P).
GOTO ADVANCE(s).
_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
P .
GOTO ADVANCE(s).
RETREAT(v)
_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
IF (v = s) STOP.
ELSE
GOTO ADVANCE(w).
GOTO ADVANCE(u).
________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
_______________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
67
68
method
# augmentations
running time
augmenting path
nC
O(m n C)
m log (mC)
capacity scaling
m log C
O(m2 log C)
m log C
O(m n log C)
mn
O(m2 n)
mn
O(m n2 )
dynamic trees
mn
O(m n log n )
69
year
method
worst case
discovered by
1951
simplex
O(m3 C)
Dantzig
1955
augmenting path
O(m2 C)
Ford-Fulkerson
1970
O(m3)
Dinic, Edmonds-Karp
1970
Dinic, Edmonds-Karp
1977
blocking flow
O(m 5/2)
Cherkasky
1978
blocking flow
O(m 7/3)
Galil
1983
dynamic trees
O(m2 log m)
Sleator-Tarjan
1985
capacity scaling
O(m2 log C)
Gabow
1997
length function
Goldberg-Rao
2012
compact network
O(m2 / log m)
Orlin
O(m)
max-flow algorithms for sparse digraphs with m edges, integer capacities between 1 and C
70
Massachusetts
AND
ROBERT E. TARJAN
Princeton University,
Bell Laboratories,
Murray
Abstract. All previously known efftcient maximum-flow algorithms work by finding augmenting paths,
either one path at a time (as in the original Ford and Fulkerson algorithm) or all shortest-length
augmenting paths at once (using the layered network approach of Dinic). An alternative method based
on the preflow concept of Karzanov is introduced. A preflow is like a flow, except that the total amount
flowing into a vertex is allowed to exceed the total amount flowing out. The method maintains a preflow
in the original network and pushes local flow excess toward the sink along what are estimated to be
shortest paths. The algorithm and its analysis are simple and intuitive, yet the algorithm runs as fast as
any other known method on dense.graphs, achieving an O(n)) time bound on an n-vertex graph. By
incorporating the dynamic tree data structure of Sleator and Tarjan, we obtain a version of the algorithm
running in O(nm log(n/m)) time on an n-vertex, m-edge graph. This is as fast as any known method
for any graph density and faster on graphs of moderate density. The algorithm also admits efticient
distributed and parallel implementations. A parallel implementation running in O(nlog n) time using
n processors and O(m) space is obtained. This time bound matches that of the Shiloach-Vishkin
algorithm, which also uses n processors but requires O(n) space.
Categories and Subject Descriptors: F.2.2 [Analysis of Algorithms and Problem Complexity]: Nonnumerical Algorithms and Problems; G.2.2 [Discrete Mathematics]: Graph Theory-graph algorithms;
network problems
71
On I m p l e m e n t i n g P u s h - R e l a b e l M e t h o d
for the M a x i m u m Flow P r o b l e m
EUROPEAN
JOURNAL
OF OPERATIONAL
RESEARCH
ELSEVIER
cher@eemi.msk.su
2 Computer Science Department, Stanford University
Stanford, CA 94305, USA
K . A h u j a a, M u r a l i K o d i a l a m
b, A j a y K . M i s h r a c, J a m e s B . O r l i n d,.
Department t~'lndustrial and Management Engineering. Indian Institute of Technology. Kanpur, 208 016, India
b AT& T Bell Laboratories, Holmdel, NJ 07733, USA
c KA'F-ZGraduate School of Business, University of Pittsburgh, Pittsburgh, PA 15260, USA
d Sloun School of Management, Massachusetts Institute of Technology. Cambridge. MA 02139. USA
Abstract
Introduction
The maximum flow algorithm is distinguished by the long line of successive contributions researchers have made in
obtaining algorithms with incrementally better worst-case complexity. Some, but not all, of these theoretical improvements
have produced improvements in practice. The purpose of this paper is to test some of the major algorithmic ideas developed
in the recent years and to assess their utility on the empirical front. However, our study differs from previous studies in
several ways. Whereas previous studies focus primarily on CPU time analysis, our analysis goes further and provides
detailed insight into algorithmic behavior. It not only observes how algorithms behave but also tries to explain why
algorithms behave that way. We have limited our study to the best previous maximum flow algorithms and some of the
recent algorithms that are likely to be efficient in practice. Our study encompasses ten maximum flow algorithms and five
72
In IEEE Transactions on PAMI, Vol. 26, No. 9, pp. 1124-1137, Sept. 2004
An Experimental Comparison of
Min-Cut/Max-Flow Algorithms for
Energy Minimization in Vision
Abstract
After [15, 31, 19, 8, 25, 5] minimum cut/maximum flow algorithms on graphs emerged as
an increasingly useful tool for exact or approximate energy minimization in low-level vision.
The combinatorial optimization literature provides many min-cut/max-flow algorithms with
different polynomial time complexity. Their practical efficiency, however, has to date been
MaxFlow Revisited:
An Empirical Comparison of Maxflow
Algorithms for Dense Vision Problems
Tanmay Verma
tanmay08054@iiitd.ac.in
Dhruv Batra
dbatra@ttic.edu
IIIT-Delhi
Delhi, India
TTI-Chicago
Chicago, USA
studied mainly outside the scope of computer vision. The goal of this paper is to provide an
experimental comparison of the efficiency of min-cut/max flow algorithms for applications
Abstract
Algorithms for finding the maximum amount of flow possible in a network (or maxflow) play a central role in computer vision problems. We present an empirical comparison of different max-flow algorithms on modern problems. Our problem instances arise
from energy minimization problems in Object Category Segmentation, Image Deconvolution, Super Resolution, Texture Restoration, Character Completion and 3D Segmentation. We compare 14 different implementations and find that the most popularly used
implementation of Kolmogorov [5] is no longer the fastest algorithm available, especially
for dense graphs.
new algorithm that we have recently developed. The algorithms we study include both
Goldberg-Tarjan style push-relabel methods and algorithms based on Ford-Fulkerson
style augmenting paths. We benchmark these algorithms on a number of typical graphs
in the contexts of image restoration, stereo, and segmentation. In many cases our new
algorithm works several times faster than any of the other methods making near real-time
performance possible. An implementation of our max-flow/min-cut algorithm is available
upon request for research purposes.
Index Terms Energy minimization, graph algorithms, minimum cut, maximum
flow, image restoration, segmentation, stereo, multi-camera scene reconstruction.
Yuri Boykov is with the Computer Science Department at the University of Western Ontario, Canada,
yuri@csd.uwo.ca. Vladimir Kolmogorov is with Microsoft Research, Cambridge, England, vnk@microsoft.com.
This work was mainly done while the authors were with Siemens Corp. Research, Princeton, NJ.
Introduction
Over the past two decades, algorithms for finding the maximum amount of flow possible in
a network (or max-flow) have become the workhorses of modern computer vision and machine learning from optimal (or provably-approximate) inference in sophisticated discrete
models [6, 11, 27, 30, 32] to enabling real-time image processing [38, 39].
73
7. N ETWORK F LOW I
max-flow and min-cut problems
Ford-Fulkerson algorithm
max-flow min-cut theorem
capacity-scaling algorithm
shortest augmenting paths
blocking-flow algorithm
unit-capacity simple networks
Bipartite matching
Q. Which max-flow algorithm to use for bipartite matching?
EVEN"
AND
R. ENDRE
TARJAN:I:
Abstract. An algorithm of Dinic for finding the maximum flow in a network is described. It is
then shown that if the vertex capacities are all equal to one, the algorithm requires at most O(IV[ 1/2 IEI)
time, and if the edge capacities are all equal to one, the algorithm requires at most O(I VI 2/3. IEI) time.
Also, these bounds are tight for Dinics algorithm.
These results are used to test the vertex connectivity of a graph in O(IVI 1/z. IEI 2) time and the
edge connectivity in O(I V[ 5/3. IEI) time.
Key words. Dinics algorithm, maximum flow, connectivity, vertex connectivity, edge connectivity
flow. Let
be a
75
76
L1.
L2.
L3.
77
advance
level graph LG
78
augment
level graph LG
79
advance
level graph LG
80
retreat
level graph LG
81
advance
level graph LG
82
augment
level graph LG
83
end of phase
level graph LG
84
85
V0
V1
Vh
Vn1/2
86
residual edges
V0
V1
Vh
Vn1/2
87