(Algorithms in Bipartite Graphs). Introduction Algorithms in unweighted bipartite graph (Yehong &...
98
Combinatorial Algorithms (Algorithms in Bipartite Graphs)
(Algorithms in Bipartite Graphs). Introduction Algorithms in unweighted bipartite graph (Yehong & Gordon) Maximum matching A simple algorithm Hopcroft-Karp
Introduction Algorithms in unweighted bipartite graph (Yehong
& Gordon) Maximum matching A simple algorithm Hopcroft-Karp
algorithm Stable marriage problem (Wang wei) GaleShapley algorithm
Algorithms in weighted bipartite graph (Wang Sheng & Jinyang)
Assignment problem Hungarian method & Kuhn-Munkres algorithm
Q&A 2 Outline
Slide 3
Definition A graph G = (V, E) is bipartite if there exists
partition V = X Y with X Y = and E X Y. Bipartite Graph types
Unweighted Weighted For every edge e E, there is a weight w(e). 3
Introduction
Slide 4
Example: There are a set of boys and a set of girls. Each boy
only likes girls and each girl only likes boys. A common friend
wants to match each boy with a girl such that the boy and girl are
both happy but they both will only be happy if the boy likes the
girl and the girl likes the boy. Is it possible for every
situation? 4 Introduction We can use a bipartite graph to model
this problem
Slide 5
Problem Testing bipartiteness Matching Maximum matching problem
Perfect matching problem Stable marriage problem Maximum weight
matching problem 5 Introduction
Slide 6
Yehong
Slide 7
Definition Matching A Matching is a subset M E such that v V at
most one edge in M is incident upon v 7 Perfect Matching A matching
which matches all vertices of the graph Maximum matching
Slide 8
A Matching A Maximum Matching 8 Not a Matching Definition We
say that a vertex is matched if it is incident to some edge in M.
Otherwise, the vertex is free matched free (not perfect) Maximum
matching
Slide 9
Definition Alternating Paths A path is alternating if its edges
alternate between M and E M. Augmenting Paths An alternating path
is augmenting if both endpoints are free Alternating Tree A tree
rooted at some free vertex v in which every path is an alternating
path. Alternating paths ( Y 1, X 2, Y 2, X 4 ) Augmenting Path (Y
1, X 2, Y 2, X 4, Y 4, X 5 ) 9 Maximum matching
Slide 10
Property of Augmenting Paths Replacing the M edges by the E M
ones increments size of the matching (Path: Y 1, X 2, Y 2, X 4, Y
4, X 5 ) 10 Berge's Theorem: A matching M is maximum iff it has no
augmenting path (Proof: Lec01 Page 3)Lec01 Maximum matching
Slide 11
A simple algorithm 11 X2X2 X3X3 X1X1 Y1Y1 Y2Y2 Y3Y3 Y4Y4
Maximum matching
A simple algorithm 15 Commonly search algorithm (BFS, DFS) O(E)
At most V times Complexity: O(VE) X2X2 X3X3 X1X1 Y1Y1 Y2Y2 Y3Y3
Y4Y4 Maximum matching
Slide 16
An algorithm to find the maximum matching given a bipartite
graph Gordon
Slide 17
Introduction The Hopcroft-Karp algorithm was published in 1973
It is a matching algorithm that finds a maximum matching in
bipartite graphs The main idea is to augment along a set of
vertex-disjoint shortest augment paths simulatenously The
complexity is O(|V||E|) In this section, some Theorems and Lemmas
from graph theory will be stated without showing the proof.
Slide 18
Definition We let the set A B denote the symmetric difference
of the set A B = (A B) (A B) A maximal set of vertex-disjoint
minimum length augmenting path is defined as follows : It is a set
of augmenting path No two path share a same vertex If the minimum
length augmenting path is of length k, then all paths in S are of
length k If p is an augmenting path not in S, then p shares a
vertex with some path p in S
Slide 19
Algorithm The algorithm of Hopcroft and Kraft is as follows :
Given a graph G = (X Y),E) 1) Let M = {}, 2) Find S = {P 1, P 2, P
k } 3) While S {} M = M S Find S 4) Output M
Slide 20
Demonstration of algorithm at some stage Let the dark edges
represent the edges in a matching M
Slide 21
Demonstration of algorithm at some stage Pink edges represent
an augmenting path Deleting them
Slide 22
Demonstration of algorithm at some stage Another augmenting
path No more paths
Slide 23
Demonstration of algorithm at some stage Pink edges represent
the paths in maximal set S M S Note the before and after
Slide 24
Algorithm Question : How do we know that this algorithm
produces the result that we want ? Theorem 1 (Berge) : A matching M
is maximum if and only if there is no augmenting path with respect
to M This theorem guarantees the correctness of the algorithm We
will now prove that the complexity of the algorithm is
O(|V||E|)
Slide 25
Lemma 2 : A maximal set S of vertex-disjoint minimum length
augmenting paths can be found in O(|E|) time Proof : Let G = (U
V,E) be the graph that we are working on and M be a matching First,
we construct a tree-like/directed acyclic graph graph given G We
start with all the free vertices in U at level 0
Slide 26
Starting at level 2k (even), the vertices at level 2k+1 are
obtained by following free edges from edges at level 2k Starting at
level 2k+1 (odd), the level at 2k+2 are obtained by following
matched edges from vertices at level 2k+1 Note that the even levels
contain vertices from U and odd levels from V Continuation of proof
of lemma 2 Recall the earlier example : There are 3 levels here U
V
Slide 27
Continuation of proof of lemma 2 We continue building the tree
until all vertices have been visited or until a free vertex is
encountered (say t) Note that in the latter case, the free vertices
are encountered at V Complexity of this portion of building the
tree is linear to the size of the edges ( similar to BFS)
Slide 28
Continuation of proof of lemma 2 Example : 0123 Dashed line
represent edges while the normal lines represent edges in the
matching M Free-vertex
Slide 29
Continuation of proof of lemma 2 Now we find a maximal set S of
vertex disjoint paths in this tree that we constructed We assign a
counter to all vertices after level 0 This counter represents the
number of edges entering the vertex previous level (think of it
like an indegree) Starting at a free vertex v at level t, we trace
a path until we reach a free vertex u at level 0
Slide 30
Continuation of proof of lemma 2 This path is an augmenting
path and we add it into S After which, we add the vertices in this
path into a deletion queue As long as the deletion queue is non
empty, we delete the vertex in the queue and from the constructed
tree This includes all the edges incident onto it Recall the
earlier example
Slide 31
Continuation of proof of lemma 2 Whenever an edge is deleted,
the counter associated with its right endpoint are all decremented
If the counter becomes 0, put the vertex into the deletion queue
(there can be no augmenting path from this vertex) After emptying
the deletion queue, if there are still free vertex at level t, it
means that an augmenting path must still exist
Slide 32
Continuation of proof of lemma 2 We continue until there are no
more free vertex at level t This entire process takes linear time,
since it is proportional to the number of edges deleted Therefore
this part takes O(|E|) Total time complexity for both parts is
O(|E|)
Slide 33
Continuation of proof of lemma 2 Example : Consider the path :
v6 u6 v5 u1 V6U6V5U1 Deletion Queue Counter of v1 decreases by
1
Slide 34
Continuation of proof of lemma 2 Example : Now consider the
path : v3 u3 v1 u2 V3U3V1U2 Deletion Queue V2U4V4 000
Slide 35
Theorems and Lemmas cited without proof Lemma 3 : Let M* be a
maximum matching, and let M be any matching in G. If the length of
the shortest augmenting path with respect to M is k, then |M*| -
|M| (|V|/k) Lemma 4 : Let k be the length of the shortest
augmenting path with respect to M and let S be a maximal set of
shortest disjoint augmenting paths with respect to M, then the
length of the shortest augmenting path with respect to M S is
larger than k
Slide 36
Theorem 5: The Hopcroft-Karp algorithm finds a maximum matching
in a bipartite graph in O(|V||E|) time Proof : Now we run the
algorithm for |V| and let M be matching after running those rounds
Lemma 4 implies that we have that in each phrase of the algorithm,
the length of the shortest augmenting path increases by at least 1
Therefore the size of the shortest augmenting path must be at least
|V|
Slide 37
Now from Lemma 3, we have that |M*| - |M| (|V|/|V|) = |V| In
each phrase, we increase the size of the matching by at least 1, so
therefore, at most |V| more phrases needed Therefore at most 2 |V|
phrases are needed for this entire algorithm. Therefore with lemma
2, the time complexity of the algorithm is O(|V| |E|) Continuation
of proof of Theorem 5
Slide 38
Wang Wei
Slide 39
Problem definition: Given n men and n women, each person has a
preference list for all members of the opposite sex; Find a
one-to-one match M. If m(a man) and w (a woman) are matched in M,
then m is the partner of w, and vice verse. Blocking pair in a
match M: (m, w), m prefers w than his partner in M, and w prefers m
than her partner. Stable match: no blocking pair exist.
Terminology
Slide 40
For each man, try to find a woman, with whom they form a
blocking pair; if no such woman exist, then the match is stable.
Complexity: O(n 2 )
Example:http://mathsite.math.berkeley.edu/smp/smp.html
Stability-checking algorithm
Slide 41
For man, propose to every women on his preference list until
get engaged; For woman, wait for proposal, accept if free or prefer
the proposer than current partner/fiance; otherwise reject the
proposal; Complexity: O(n 2 ) Basic Gale-Shapley algorithm
Slide 42
For any given instance of the stable marriage problem, the
Gale- Shapley algorithm terminates, and, on termination, the
engaged pairs constitute a stable matching. Termination: Stability:
if m prefers w than his partner, then w must have rejected m, i.e.,
w prefers her partner to m. (m,w) cannot be a block pair no block
pair exists. If GS not terminate, then at least one man is free He
must be rejected by all women Once a woman is engaged, she will
never be free To reject a man, the woman must be engaged All women
are engaged All men are engaged Theorem 1.
Slide 43
Theorem 2: All possible executions of the Gale-Shapley
algorithm(with the men as the proposers) yield the same stable
matching, in which, man has the best partner he can have in any
stable matching. Theorem 3: In the man-optimal stable matching,
each woman has the worst partner that she can have in any stable
matching.
Slide 44
Jinyang
Slide 45
Suppose we have n resources to which we want to assign to n
tasks on a one-to-one basis. Suppose we also know the cost(gain) of
assigning a given resource to a given task. We wish to nd an
optimal assignmentone which minimizes(maximizes) total cost(gain).
Min-Cost or Max-Weight Perfect Matching in Bipartite Graph.
Assignment Problem
Slide 46
Three students collaborate to finish a project. Their
efficiency is different. codingtestwriting John4 hours3 hours
Terry6 hours4 hours5 hours Eric7 hours 5 hours Example
Slide 47
We will formula this problem in a matrix representation. It is
easier to illustrate its key idea and how it works. We will explain
how to implement it into algorithm and show its complexity later.
We will use minimum cost form of the problem. For maximum problem,
we just reverse the num. Matrix Representation
Slide 48
Slide 49
Difficulty
Slide 50
If a number is added to or subtracted from all of the entries
of any one row or column of a cost matrix, then on optimal
assignment for the resulting cost matrix is also an optimal
assignment for the original cost matrix. You have to choose one
entry in each row or column any way. So this operation add or
reduce the same number for all assignment. Theorem 1
Slide 51
Assignment Problem
Slide 52
When there exist a assignment has a zero cost in a non-negative
matrix. This assignment is an optimal assignment. Theorem 2
Slide 53
The key idea of Hungarian Method is to transform the original
matrix to a non-negative matrix which have a zero assignment by add
or subtract operation in each row and column. There will be some
slight difference in different implementation. Hungarian
Method
Slide 54
Step 1: Subtract the smallest entry in each row from all the
entries of its row. Step 2: Subtract the smallest entry in each
column from all the entries of its column. This two step is not
necessary. But it can reduce the number of iterations later. The
only requirement is that it comes to a non-negative matrix.
Hungarian Method
Slide 55
Step 3: Draw lines through appropriate rows and columns so that
all the zero entries of the cost matrix are covered and the minimum
number of such lines is used. Step 4: If the minimum number of
covering lines is n, an optimal assignment of zeros is possible and
we are nished. Else continue step 5. Step 5: Determine the smallest
entry not covered by any line. Subtract this entry from each
uncovered row, and then add it to each covered column. Return to
Step 3. Hungarian Method
Slide 56
Example 1
Slide 57
Example 2
Slide 58
Slide 59
Slide 60
The lines is a minimum dominating set of all zero point.
Transform the solution of maximum matching to minimum dominating
set. How to Draw Lines
Slide 61
0*** ***0 0*** *0**
Slide 62
Find a maximum assignment(maximum match). 0*** ***0 0*** *0**
How to Draw Lines
Slide 63
Find a maximum assignment(maximum match). Mark all rows having
no assignments. 0***$ ***0 0*** *0** How to Draw Lines
Slide 64
Find a maximum assignment(maximum match). Mark all rows having
no assignments. Then mark all columns having zeros in marked
row(s). $ 0***$ ***0 0*** *0** How to Draw Lines
Slide 65
Find a maximum assignment(maximum match). Mark all rows having
no assignments. Then mark all columns having zeros in marked
row(s). Then mark all rows having assignments in marked
columns.Repeat this until a closed loop is obtained. $ 0***$ ***0
0***$ *0** How to Draw Lines
Slide 66
Find a maximum assignment(maximum match). Mark all rows having
no assignments. Then mark all columns having zeros in marked
row(s). Then mark all rows having assignments in marked
columns.Repeat this until a closed loop is obtained. Then draw
lines through all marked columns and unmarked rows. $ 0***$ ***0
0***$ *0** How to Draw Lines
Slide 67
Why Always Stop?
Slide 68
Wang Sheng
Slide 69
1955, Harold Kuhn Hungarian method was published and was
largely based on the earlier works of two Hungarian mathematicians
1957, James Munkres Munkres observed it is polynomial in O(n 4 )
and since then the algorithm was also known as Kuhn-Munkres
algorithm 1960, Edmonds and Karp The KM algorithm was modified to
achieve an O(n 3 ) running time Evolvement of Hungarian Method
Slide 70
Basic Hungarian method Consider assignment problem in terms of
matrix Idea: add/subtract X from all entries of a row/column Goal:
choose 0s from nonnegative matrix Easy to understand Kuhn-Munkres
algorithm Consider assignment problem in terms of bipartite graph
Easy to analysis and implement Our Goal Introduce KM and show both
of them are equivalent Introduction to KM Algorithm
Slide 71
Matrix vs. Bipartite graph For each entry C i,j in matrix,
there is an edge in bipartite graph from X i to Y j with weight
equal to C i,j In order to be consistent with theorems introduced
in the algorithm we consider max-weight matching Y1Y1 Y2Y2 Y3Y3
X1X1 X2X2 X3X3 3 33 222 1 10 Restate Assignment Problem
Slide 72
Feasible labeling L A vertex labeling is a function L : V R A
feasible labeling is one such that L(x)+L(y) w(x, y), x X, y Y
Equality Graphs Equality Graph is G = (V,E L ) where E L = {(x, y)
: L(x)+L(y) = w(x, y)} 212 111 3 33 222 1 10 Definitions
Slide 73
If L is feasible and M is a perfect matching in E L then M is a
max-weight matching each node is covered exactly once and L(x)+L(y)
w(x, y) therefore the upper-bound of the weight is the sum of
labels Power of the theorem Transform problem from weighted
matching to un-weighted perfect matching 111 Kuhn-Munkres
Theorem
Slide 74
Key idea find a good feasible labeling that remains enough
edges in equality graph to ensure perfect matching can be done
Algorithm proposal Start with any feasible labeling L and some
matching M in E L While M is not perfect, repeat: Find an
augmenting path in E L to increase the size of M or if no path
exists, improve L to L such that E L E L Inspiration from KM
Theorem
Slide 75
Simplest assignment Maximize L(x) while Minimize L(y) y Y, L(y)
= 0 x X, L(x) = max{w(x,y)}, y Y It is obvious that x X, y Y, w(x,
y) L(x)+L(y) Y 1 0Y 2 0Y 3 0 X 1 6X 2 8X 3 4 1 4 68 1 6 Finding an
Initial Feasible Labeling
Slide 76
Neighbor of u V and S V N L (u) = { v : (u,v) E L } N L (S) = u
S N L (u) Lemma Let S X and T = N L (S) Y. Set L = min { L(x) +
L(y) w(x,y) }, x S, y T Update the labels (1) if v SL(v) = L(v) - L
(2) if v TL(v) = L(v) + L (3) otherwiseL(v) = L(v) Then L is a
feasible labeling Improving Labeling
Slide 77
L = min { L(x) + L(y) w(x,y) }, x S, y T Consider a matrix C
with w(x,y) as its elements For row x X / column y Y, add L(x)/
L(y) to each element Problem is equivalent to solve the min-cost
assignment in C Edge with L(x) + L(y) = w(x,y) is the 0 element in
matrix C (1) if v S, L(v) = L(v) - L (2) if v T, L(v) = L(v) + L S
: set of uncovered rowsT : set of covered columns L : the smallest
entry not covered by any line Subtract this entry from each
uncovered row, and then add it to each covered column Equivalence
of Graph and Matrix
Slide 78
Edges in E L (1) if v SL(v) = L(v) - L (2) if v TL(v) = L(v) +
L (3) otherwiseL(v) = L(v) If (x,y) E L for x S, y T then (x,y) E L
If (x,y) E L for x S, y T then (x,y) E L There is some edge (x,y) E
L for x S, y T With good choice of S, we can guarantee there are
more edges in new Equality Graph Effectiveness of Label Update
Slide 79
1. Generate initial labeling L and matching M in E L 2. If M is
perfect, terminate. Otherwise pick free vertex u X. Set S = {u}, T
= {}. 3. If N L (S) = T, update labels(forcing N L (S) T) L = min {
L(x) + L(y) w(x,y) }, x S, y T (1) if v SL(v) = L(v) - L (2) if v
TL(v) = L(v) + L (3) otherwiseL(v) = L(v) 4. If N L (S) T, pick y N
L (S) T. If y is free, augmenting u-y and go to 2. If y is matched
to z, S = S {z}, T = T {y}. Go to 3. Kuhn-Munkres Algorithm
Slide 80
Generate initial labeling and matching Pick a free vertex, set
S={u} T={}; otherwise stop If N L (S) = T, update labels (force N L
(S) T) If N L (S) T, pick y to be N L (S) T If y is free, augment u
y, go to step 2 If y is matched to z, S = S {z}, T = T {y}. go to
step 3 Y1Y1 Y2Y2 Y3Y3 X1X1 X2X2 X3X3 1 68 4 1 6 Original Graph Y1Y1
Y2Y2 Y3Y3 X1X1 X2X2 X3X3 Equality Graph + Matching Example
Slide 81
Generate initial labeling and matching Pick a free vertex, set
S={u} T={}; otherwise stop If N L (S) = T, update labels (force N L
(S) T) If N L (S) T, pick y to be N L (S) T If y is free, augment u
y, go to step 2 If y is matched to z, S = S {z}, T = T {y}. go to
step 3 Y 1 0Y 2 0Y 3 0 X 1 6X 2 8X 3 4 1 68 4 1 6 Original Graph
Y1Y1 Y2Y2 Y3Y3 X1X1 X2X2 X3X3 Equality Graph + Matching
Example
Slide 82
Generate initial labeling and matching Pick a free vertex, set
S={u} T={}; otherwise stop If N L (S) = T, update labels (force N L
(S) T) If N L (S) T, pick y to be N L (S) T If y is free, augment u
y, go to step 2 If y is matched to z, S = S {z}, T = T {y}. go to
step 3 Y 1 0Y 2 0Y 3 0 X 1 6X 2 8X 3 4 1 68 4 1 6 Original Graph
Y1Y1 Y2Y2 Y3Y3 X1X1 X2X2 X3X3 Equality Graph + Matching
Example
Slide 83
Generate initial labeling and matching Pick a free vertex, set
S={u} T={}; otherwise stop If N L (S) = T, update labels (force N L
(S) T) If N L (S) T, pick y to be N L (S) T If y is free, augment u
y, go to step 2 If y is matched to z, S = S {z}, T = T {y}. go to
step 3 Y 1 0Y 2 0Y 3 0 X 1 6X 2 8X 3 4 1 68 4 1 6 Original Graph
Y1Y1 Y2Y2 Y3Y3 X1X1 X2X2 X3X3 Equality Graph + Matching
Example
Slide 84
Generate initial labeling and matching Pick a free vertex, set
S={u} T={}; otherwise stop If N L (S) = T, update labels (force N L
(S) T) If N L (S) T, pick y to be N L (S) T If y is free, augment u
y, go to step 2 If y is matched to z, S = S {z}, T = T {y}. go to
step 3 Y 1 0Y 2 0Y 3 0 X 1 6X 2 8X 3 4 1 68 4 1 6 Original Graph
Y1Y1 Y2Y2 Y3Y3 X1X1 X2X2 X3X3 Equality Graph + Matching S = {X 1 }
T = {} Example
Slide 85
Generate initial labeling and matching Pick a free vertex, set
S={u} T={}; otherwise stop If N L (S) = T, update labels (force N L
(S) T) If N L (S) T, pick y to be N L (S) T If y is free, augment u
y, go to step 2 If y is matched to z, S = S {z}, T = T {y}. go to
step 3 Y 1 0Y 2 0Y 3 0 X 1 6X 2 8X 3 4 1 68 4 1 6 Original Graph
Y1Y1 Y2Y2 Y3Y3 X1X1 X2X2 X3X3 Equality Graph + Matching S = {X 1 }
T = {} Example
Slide 86
Generate initial labeling and matching Pick a free vertex, set
S={u} T={}; otherwise stop If N L (S) = T, update labels (force N L
(S) T) If N L (S) T, pick y to be N L (S) T If y is free, augment u
y, go to step 2 If y is matched to z, S = S {z}, T = T {y}. go to
step 3 Y 1 0Y 2 0Y 3 0 X 1 6X 2 8X 3 4 1 68 4 1 6 Original Graph
Y1Y1 Y2Y2 Y3Y3 X1X1 X2X2 X3X3 Equality Graph + Matching S = {X 1 }
T = {} Example
Slide 87
Generate initial labeling and matching Pick a free vertex, set
S={u} T={}; otherwise stop If N L (S) = T, update labels (force N L
(S) T) If N L (S) T, pick y to be N L (S) T If y is free, augment u
y, go to step 2 If y is matched to z, S = S {z}, T = T {y}. go to
step 3 Y 1 0Y 2 0Y 3 0 X 1 6X 2 8X 3 4 1 68 4 1 6 Original Graph
Y1Y1 Y2Y2 Y3Y3 X1X1 X2X2 X3X3 Equality Graph + Matching S = {X 1,X
2 } T = {Y 2 } Example
Slide 88
Generate initial labeling and matching Pick a free vertex, set
S={u} T={}; otherwise stop If N L (S) = T, update labels (force N L
(S) T) If N L (S) T, pick y to be N L (S) T If y is free, augment u
y, go to step 2 If y is matched to z, S = S {z}, T = T {y}. go to
step 3 Y 1 0Y 2 0Y 3 0 X 1 6X 2 8X 3 4 1 68 4 1 6 Original Graph
Y1Y1 Y2Y2 Y3Y3 X1X1 X2X2 X3X3 Equality Graph + Matching S = {X 1,X
2 } T = {Y 2 } Example
Slide 89
Generate initial labeling and matching Pick a free vertex, set
S={u} T={}; otherwise stop If N L (S) = T, update labels (force N L
(S) T) If N L (S) T, pick y to be N L (S) T If y is free, augment u
y, go to step 2 If y is matched to z, S = S {z}, T = T {y}. go to
step 3 Y 1 0Y 2 2Y 3 0 X 1 4X 2 6X 3 4 1 68 4 1 6 Original Graph
Y1Y1 Y2Y2 Y3Y3 X1X1 X2X2 X3X3 Equality Graph + Matching S = {X 1,X
2 } T = {Y 2 } Example
Slide 90
Generate initial labeling and matching Pick a free vertex, set
S={u} T={}; otherwise stop If N L (S) = T, update labels (force N L
(S) T) If N L (S) T, pick y to be N L (S) T If y is free, augment u
y, go to step 2 If y is matched to z, S = S {z}, T = T {y}. go to
step 3 Y 1 0Y 2 2Y 3 0 X 1 4X 2 6X 3 4 1 68 4 1 6 Original Graph
Y1Y1 Y2Y2 Y3Y3 X1X1 X2X2 X3X3 Equality Graph + Matching S = {X 1,X
2 } T = {Y 2 } Example
Slide 91
Generate initial labeling and matching Pick a free vertex, set
S={u} T={}; otherwise stop If N L (S) = T, update labels (force N L
(S) T) If N L (S) T, pick y to be N L (S) T If y is free, augment u
y, go to step 2 If y is matched to z, S = S {z}, T = T {y}. go to
step 3 Y 1 0Y 2 2Y 3 0 X 1 4X 2 6X 3 4 1 68 4 1 6 Original Graph
Y1Y1 Y2Y2 Y3Y3 X1X1 X2X2 X3X3 Equality Graph + Matching S = {X 1,X
2 } T = {Y 2 } Example
Slide 92
Generate initial labeling and matching Pick a free vertex, set
S={u} T={}; otherwise stop If N L (S) = T, update labels (force N L
(S) T) If N L (S) T, pick y to be N L (S) T If y is free, augment u
y, go to step 2 If y is matched to z, S = S {z}, T = T {y}. go to
step 3 Y 1 0Y 2 2Y 3 0 X 1 4X 2 6X 3 4 1 68 4 1 6 Original Graph
Y1Y1 Y2Y2 Y3Y3 X1X1 X2X2 X3X3 Equality Graph + Matching S = {X 1,X
2 } T = {Y 2 } Example
Slide 93
Generate initial labeling and matching Pick a free vertex, set
S={u} T={}; otherwise stop If N L (S) = T, update labels (force N L
(S) T) If N L (S) T, pick y to be N L (S) T If y is free, augment u
y, go to step 2 If y is matched to z, S = S {z}, T = T {y}. go to
step 3 Y 1 0Y 2 2Y 3 0 X 1 4X 2 6X 3 4 1 68 4 1 6 Original Graph
Y1Y1 Y2Y2 Y3Y3 X1X1 X2X2 X3X3 Equality Graph + Matching S = {X 1,X
2 } T = {Y 2 } Example
Slide 94
Generate initial labeling and matching Pick a free vertex, set
S={u} T={}; otherwise stop If N L (S) = T, update labels (force N L
(S) T) If N L (S) T, pick y to be N L (S) T If y is free, augment u
y, go to step 2 If y is matched to z, S = S {z}, T = T {y}. go to
step 3 Y 1 0Y 2 2Y 3 0 X 1 4X 2 6X 3 4 1 68 4 1 6 Original Graph
Y1Y1 Y2Y2 Y3Y3 X1X1 X2X2 X3X3 Equality Graph + Matching S = {X 1,X
2 } T = {Y 2 } max-weight is 16 Example
Slide 95
In each phase of algorithm, |M| increases by 1, so there are at
most V phases. y T keep track of slack y = min{L(x)+L(y)-w(x,y)} In
each phase Initializing all slacks. O(V) When a vertex moves into
S, all slacks need update. O(V) Only |V| vertices can be moved into
S. O(V 2 ) When updating labels, L = min(slack y ). O(V) After
getting L, must update slack y = slack y - L. O(V) L can be
calculated |V| times per phase. O(V 2 ) Total time per phase is O(V
2 ) Total running time is O(V 3 ) Complexity