**Tutte’s Theorem**: graph has perfect matching if and only if for all subsets ,

where denotes the number of odd components in the subgraph .

To demonstrate forward direction, assume towards contradiction that has perfect matching and there exists subset such that . Note that no two distinct odd components in can share the same vertex in , since the edges should constitute a matching. Thus, there exists some odd component with no matching edge to verses in , which yields a contradiction

The other direction can be proved by first proving the correctness of Edmond’s algorithm, which computes maximum matchings for general graphs.

**Edmond’s Algorithm:**

For a matching , a **blossom** is an odd cycle of length with edges from .

**Lemma:** Let be a blossom of such that is disjoint from the rest of . Let be the graph obtained from by contracting the blossom to a single vertex and let be the matching restricted to . Then, has an augmenting path iff has an augmenting path.

**Proof: **Clearly, if no augmenting path meets , then the statement is trivial in both directions. Suppose we have an augmenting path in that ends at the blossom vertex (notice that the blossom vertex is unmatched in ). Since the blossom is an odd cycle, there must be a path in to the unmatched vertex in the blossom. Similarly, if we have an augmenting path in that meets the blossom at some vertex, then we get a corresponding augmenting path in that ends at the blossom vertex.

With this idea, it is possible to modify the augmenting path algorithm from bipartite graphs to work for general graphs. Let the vertices on the even level be called outer vertices and the vertices on the odd levels be called inner vertices.

- Let be forest with roots initialized as all unmatched vertices in
- For every outer and with , add and to where is a matching edge.
- For outer from different components of , if , then we found an augmenting path, so output it and exit
- For outer from the same component and
- Identify blossom (Least Common Ancestor of )
- Shrink the blossom, swap the matching and non matching edges from the blossom vertex to the root of its component.

- Repeat till either augmenting path is found or if no more new vertices can be added.

**Time Complexity:** The running time is since we perform graph search which takes steps, the size of the matching increases by every time we find an augmenting path, and there can be at most blossoms in the graph.

**Correctness: **

We have proved (in previous lecture) that is a maximum matching if and only if there are no augmenting paths. Suppose that Edmond’s algorithm does not find an augmenting path. But does this mean there are no augmenting paths? Is Edmond’s algorithm guaranteed to find an augmenting path in a graph if it exists?

First, observe that there are no edges between outer vertices:

- If there is an edge between outer vertices in the same component of the forest, then this implies a blossom.
- If there is an edge between outer vertices in different components, then this implies an augmenting path.

**Claim** For a subset that leaves isolated odd components in , then the number of unmatched vertices in any matching is at least .

**Proof **The claim follows from the following observation: there must be at least one unmatched vertex in each odd component, and for this vertex to be matched, it must be matched to a vertex in .

**Proof (Edmond’s algorithm) **Take the be all inner vertices, which leaves a number of isolated odd components equal to the number of outer vertices. Thus, the number of unmatched vertices in any matching is at least #outer-#inner vertices. Note that #outer-#inner is equal to the number of components in the forest found by Edmond’s algorithm, which is also equal to the number of unmatched vertices. Thus, if Edmond’s algorithm does not find an augmenting path, then the matching is maximum!

**Corollary** (Tutte’s Theorem) has a perfect matching iff for all , .