Content deleted Content added
m Format code |
Undid revision 1297413102 by United Nations Peace Ambassadors Foundation -UNPAF (talk) that link goes to an Australian magazine |
||
(9 intermediate revisions by 5 users not shown) | |||
Line 1:
{{short description|Algorithm for finding max graph matchings}}
The '''blossom algorithm''' is an [[algorithm]] in [[graph theory]] for constructing [[maximum matching]]s on graphs. The algorithm was developed by [[Jack Edmonds]] in 1961,<ref name = "glimpse">{{Citation▼
▲
| last = Edmonds
| first = Jack
Line 17 ⟶ 19:
| year = 1965
| pages = 449–467
| doi-access = free
}}</ref> Given a general [[Graph (discrete mathematics)|graph]] {{math|1=''G'' = (''V'', ''E'')}}, the algorithm finds a matching
The algorithm runs in time
| author1 = Micali, Silvio
| author2 = Vazirani, Vijay
Line 44 ⟶ 47:
==Augmenting paths==
Given {{math|1=''G'' = (''V'', ''E'')}} and a matching
:<math>M_1 = M \oplus P = ( M \setminus P ) \cup ( P \setminus M )</math>. [[File:Edmonds augmenting path.svg|500px|alt=Augmentation along a path]]
By [[Berge's lemma]], matching
| author1 = Lovász, László
| authorlink1 = László Lovász
Line 81 ⟶ 85:
==Blossoms and contractions==
Given {{math|1=''G'' = (''V'', ''E'')}} and a matching
'''''Finding Blossoms:'''''
* Traverse the graph starting from an exposed vertex.
* Starting from that vertex, label it as an outer vertex
* Alternate the labeling between vertices being inner
* If we end up with two adjacent vertices labeled as outer
Define the '''contracted graph''' {{mvar|G'
[[File:Edmonds blossom.svg|500px|alt=Example of a blossom]]
{{mvar|G'
| author = Tarjan, Robert
| contribution = Sketchy Notes on Edmonds' Incredible Shrinking Blossom Algorithm for General Matching
Line 100 ⟶ 104:
}}</ref> In more detail:
* if {{mvar|P'
[[File:Edmonds lifting path.svg|500px|alt=Path lifting when {{mvar|P'
* if {{mvar|P'
[[File:Edmonds lifting end point.svg|500px|alt=Path lifting when {{mvar|P'
Thus blossoms can be contracted and search performed in the contracted graphs. This reduction is at the heart of Edmonds' algorithm.
Line 112 ⟶ 116:
==Finding an augmenting path==
The search for an augmenting path uses an auxiliary data structure consisting of a [[forest (graph theory)|forest]]
In each iteration the algorithm either (1) finds an augmenting path, (2) finds a blossom and recurses onto the corresponding contracted graph, or (3) concludes there are no augmenting paths. The auxiliary structure is built by an incremental procedure discussed next.<ref name = "tarjan notes"/>
The construction procedure considers vertices
INPUT: Graph ''G'', matching ''M'' on ''G''
Line 165 ⟶ 169:
[[File:blossom contraction.png|400px|alt=Blossom contraction on line B21]]
Finally, it locates an augmenting path {{mvar|P′}} in the contracted graph (line B22) and lifts it to the original graph (line B23). Note that the ability of the algorithm to contract blossoms is crucial here; the algorithm cannot find
[[File:path detection.png|400px|alt=Detection of augmenting path {{mvar|P′}} in {{mvar|G′}} on line B17]]
[[File:path lifting.png|400px|alt=Lifting of {{mvar|P′}} to corresponding augmenting path in {{mvar|G}} on line B25]]
===Analysis===
The forest
| author1 = Kenyon, Claire
| author2 = Lovász, László
Line 180 ⟶ 184:
| title = Technical Report CS-TR-251-90, Department of Computer Science, Princeton University
}}</ref>
* a tree
**
** every vertex at an odd distance from the root has exactly two incident edges in
** all paths from
* a forest
** its connected components are alternating trees, and
** every exposed vertex in
Each iteration of the loop starting at line B09 either adds to a tree
===Bipartite matching===
When
===Weighted matching===
The matching problem can be generalized by assigning weights to edges in
| author = Kolmogorov, Vladimir
| title = Blossom V: A new implementation of a minimum cost perfect matching algorithm
Line 211 ⟶ 215:
<references/>
[[Category:Graph algorithms]]
[[Category:Matching (graph theory)]]
|