Hopcroft-Karp: Difference between revisions
Jump to navigation
Jump to search
(Created page with "== Abstract view == '''Algorithmic problem:''' Cardinality-maximal matching in Basic graph definitions#Bipartite and k-partite graphs|bipar...") |
|||
Line 32: | Line 32: | ||
# While there are two BFS runs in <math>S</math> that have seen the same edge: | # While there are two BFS runs in <math>S</math> that have seen the same edge: | ||
## Choose two such BFS runs and such an edge <math>\{v,w\}</math>, say. | ## Choose two such BFS runs and such an edge <math>\{v,w\}</math>, say. | ||
## [[Matchings in graphs#Alternating and augmenting paths|Augment]] <math>M</math> along the concatenation of the paths in the two | ## [[Matchings in graphs#Alternating and augmenting paths|Augment]] <math>M</math> along the concatenation of the paths in the arborescences of these two BFS runs from the start nodes to <math>v</math> and <math>w</math>, respectively, and of <math>\{v,w\}</math>. | ||
## Remove these two BFS runs from the set of all BFS runs. | ## Remove these two BFS runs from the set of all BFS runs. | ||
'''Proof:''' | '''Proof:''' | ||
The variant is obviously maintained. To prove the variant, first note | The variant is obviously maintained. To prove the variant, first note |
Revision as of 13:43, 22 November 2014
Abstract view
Algorithmic problem: Cardinality-maximal matching in bipartite graphs.
Type of algorithm: loop.
Auxiliary data structures: a set [math]\displaystyle{ S }[/math] of BFS runs as iterators (cf. the corresponding remark). The modification to find augmenting paths is applied.
Invariant:
- [math]\displaystyle{ M }[/math] is a matching in [math]\displaystyle{ G }[/math].
Variant: The shortest length of an augmenting path in terms of the number of edges is increased.
Break condition: [math]\displaystyle{ S=\emptyset }[/math].
Induction basis
Abstract view:
- Start with an arbitrary matching, for example, the empty matching.
- Create and initialize one BFS run for each exposed node.
Induction step
Abstract view: In the [math]\displaystyle{ i }[/math]-th iteration:
- Process all nodes of distance [math]\displaystyle{ i-1 }[/math] in the queues of all BFS runs.
- For each BFS run: If it had no nodes to process in step 1, remove it from [math]\displaystyle{ S }[/math].
- While there are two BFS runs in [math]\displaystyle{ S }[/math] that have seen the same edge:
- Choose two such BFS runs and such an edge [math]\displaystyle{ \{v,w\} }[/math], say.
- Augment [math]\displaystyle{ M }[/math] along the concatenation of the paths in the arborescences of these two BFS runs from the start nodes to [math]\displaystyle{ v }[/math] and [math]\displaystyle{ w }[/math], respectively, and of [math]\displaystyle{ \{v,w\} }[/math].
- Remove these two BFS runs from the set of all BFS runs.
Proof: The variant is obviously maintained. To prove the variant, first note