KU Math 725: Lecture 2/23/2026
On this page:
Recall from last time:
[definition=%counter%] A path is $M$-augmenting if its edges alternate between edges in $M$ and not in $M$ and both endpoints are not matched by $M$. [/definition]
[remark=%counter%] If $P$ is an $M$-augmenting path, then
\[M \Delta P = (M \cup P) \setminus (M \cap P).\]is a matching with one more edge than $M$.
Fact 1: If $C = A \Delta B$, then $A = B \Delta C$ and $B = A \Delta C$. This says that every element is contained in an even number of the sets $A, B, C$. [/remark]
[lemma=%counter% (Lemma 3.10)] Let $M$, $N$ be matchings in $G$. Every nontrivial component of $M \Delta N$ is either a path or even cycle. [/lemma]
[theorem=%counter% (Theorem 3.11)] Let $M$ be a matching on $G$. Then $M$ is maximum if and only if $G$ contains no $M$-augmenting path. [/theorem]
[proof] ($\implies$) We did this direction last time.
($\impliedby$) We proceed by contrapositive. Suppose $M$ is a non-maximum matching. Then let $N$ be a mathcing with $|N| > |M|$. Set $F \coloneqq M \Delta N$. Then
\[\begin{align*} |F \cap N| &= |N| - |M\cap N|, \\ |F \cap M| &= |M| - |M \cap N|. \end{align*}\]Thus,
\[|F \cap N| > |F \cap M|.\]So there is some component of $H$ of $G$ that contains more edges of $N$ than $M$. By Lemma 3.10, $H$ must be a path of odd length (can’t be an even cycle since it contains more edges of $N$ then $M$ and can’t be an even path for the same reason.). Say
\[H = v_0 v_1 \cdots v_\ell\]with $v_0v_1 \in N$, $v_1v_2\in M, \ldots, v_{\ell - 1}v_{\ell}\in N$. Now both $F$ and $N$ contain exactly one edge incident to $v_0$:
\[\begin{align*} v_0v_1 &\in N \text{ (matching)}, \\ v_0v_1 &\in H \text{ (path)}. \end{align*}\]But $F = M \Delta N$, so $M = F \Delta N$. Thus, $v_0v_1 \notin M$. There are no other edges incident to $v_0$ since this would violate Fact 1.
By the same logic $v_\ell$is not covered by $M$. [/proof]
Kuhn’s Algorithm
For $x \in V(G)$, $M$ a matching, define
\[N_M(x) = \{\text{neighbors of } x \text{ that are not matched to } x \text{ by } M\}.\]If $X \subseteq V(G)$, define
\[N_M(X) = \bigcup_{x\in X} N_M(x).\]Augment:
* Input: G = (V,E), bipartite with parts X, Y and X_0 \in X that is unmatched by M.
* Output: M-augmenting path with starting vertex x_0 or certification that no such path exists.
i := 0
s_0 := {x_0}
R_0 := N_M(x_0)
while R_i \neq \emptyset do
if any vertex r in R_i is unmatched by M:
return M-augmenting path using R_i, S_i
else:
i := i + 1
S_i := {x \in X | for y \in R_{i-1} there exists y \in M}
R_i := N_M(S_i)
return no path