Matchings and Covers
A matching in a graph selects edges with no shared endpoints. The theory of matchings connects combinatorial optimization, linear programming, and polyhedral geometry, with applications from scheduling to chemistry.
Basic Definitions
A matching in is a set of pairwise non-adjacent edges. A vertex is saturated by if it is an endpoint of some edge in . The matching number is the maximum size of a matching. A perfect matching saturates all vertices (requires even). A matching is maximal if no edge can be added; maximal maximum in general.
A vertex cover is a set of vertices such that every edge has at least one endpoint in . The vertex cover number . Always (each matching edge needs a distinct cover vertex). König's theorem (bipartite): when is bipartite. For general graphs, the Gallai theorem: when every component has a perfect matching... no, correctly: where is the independence number.
Augmenting Paths
An augmenting path for matching is a path that starts and ends at unsaturated vertices and alternates between edges not in and edges in . Berge's lemma: is maximum if and only if no augmenting path exists. To enlarge : find an augmenting path and set (symmetric difference). This increases by 1. The Hopcroft-Karp algorithm finds maximum matchings in bipartite graphs in time.
For general (non-bipartite) graphs, augmenting paths can be found using Edmonds' blossom algorithm. A blossom is an odd cycle where all but one vertex is matched within the cycle. The algorithm "shrinks" blossoms to single vertices, finds augmenting paths in the contracted graph, and "expands" back. This runs in time (improved to with Micali-Vazirani).