Content deleted Content added
put the claim about complexity near the top |
|||
Line 18:
| pages = 449–467
}}</ref> Given a general [[Graph (discrete mathematics)|graph]] ''G'' = (''V'', ''E''), the algorithm finds a matching ''M'' such that each vertex in ''V'' is incident with at most one edge in ''M'' and |''M''| is maximized. The matching is constructed by iteratively improving an initial empty matching along augmenting paths in the graph. Unlike [[bipartite graph|bipartite]] matching, the key new idea is that an odd-length cycle in the graph (blossom) is contracted to a single vertex, with the search continuing iteratively in the contracted graph.
The algorithm runs in time <math>O( |E||V|^2)</math>, where <math>|E|</math> is the number of [[edge (graph)|edges]] of the graph and <math>|V|</math> is its number of [[vertex (graph)|vertices]]. A better running time of <math>O( |E| |V|^{1 / 2} )</math> for the same task can be achieved with the much more complex algorithm of Micali and Vazirani<ref name = "micali">{{cite conference
| author1 = Micali, Silvio▼
| author2 = Vazirani, Vijay▼
| title = An O(V<sup>1/2</sup>E) algorithm for finding maximum matching in general graphs▼
| conference = 21st Annual Symposium on Foundations of Computer Science▼
| year = 1980▼
| publisher = IEEE Computer Society Press, New York▼
| pages = 17–27▼
}}</ref>.
A major reason that the blossom algorithm is important is that it gave the first proof that a maximum-size matching could be found using a polynomial amount of computation time. Another reason is that it led to a [[linear programming]] polyhedral description of the matching [[polytope]], yielding an algorithm for min-''weight'' matching.<ref name = "weighted">
Line 177 ⟶ 187:
** every exposed vertex in ''G'' is a root of an alternating tree in ''F''.
Each iteration of the loop starting at line B09 either adds to a tree ''T'' in ''F'' (line B10) or finds an augmenting path (line B17) or finds a blossom (line B20). It is easy to see that the running time is <math>O( |E||V|^2)</math>.
▲ | author1 = Micali, Silvio
▲ | author2 = Vazirani, Vijay
▲ | title = An O(V<sup>1/2</sup>E) algorithm for finding maximum matching in general graphs
▲ | conference = 21st Annual Symposium on Foundations of Computer Science
▲ | year = 1980
▲ | publisher = IEEE Computer Society Press, New York
▲ | pages = 17–27
===Bipartite matching===
|