Hall's Marriage Theorem characterizes when a perfect matching exists in a bipartite graph: a perfect matching from set A to set B exists if and only if for every subset S of A, |N(S)| ≥ |S| (neighborhood has at least as many vertices). This elegant criterion translates matching existence into a set-theoretic condition.
Prove the forward direction (perfect matching ⟹ Hall's condition) directly, then apply Hall's condition to concrete examples like assigning students to dorm rooms.
The condition must hold for ALL subsets S, not just single vertices or pairs. Checking only single vertices is insufficient.
From your study of bipartite matching, you know that a perfect matching pairs every vertex on one side of a bipartite graph with a distinct vertex on the other side. Hall's Marriage Theorem gives a precise, checkable condition for when such a matching exists — a striking example of a theorem that is both elegant and immediately practical.
Picture the setup as a matching problem: on the left are n suitors, on the right are n potential matches, and edges encode compatibility. A perfect matching marries every suitor to a compatible match. When does this fail? Exactly when some group of suitors collectively has too few compatible options — there is a bottleneck. If four suitors are only compatible with three matches on the right, no matching can accommodate all four. Hall's condition formalizes exactly this: for every subset S of the left side, the neighborhood N(S) — all vertices on the right adjacent to at least one vertex in S — must satisfy |N(S)| ≥ |S|. Every group must have enough options.
The theorem says this condition is not just necessary but sufficient: if Hall's condition holds for every subset S, a perfect matching is guaranteed to exist. The proof of necessity is immediate — a perfect matching injects S into N(S), so |N(S)| ≥ |S|. The proof of sufficiency (that Hall's condition guarantees a matching) is the deeper direction, typically proved by strong induction on |A|. The argument shows you can always extend a partial matching when the condition holds, using the condition to locate an augmenting path whenever the current matching is incomplete.
A critical trap is checking Hall's condition only for individual vertices or small subsets and concluding a perfect matching exists. The condition must hold for all 2^|A| subsets. In practice, when Hall's condition fails, identifying the violated subset S — called a Hall violator or Hall set — immediately locates the bottleneck and explains exactly why no perfect matching can exist. This diagnostic power makes the theorem as useful for proving non-existence as for guaranteeing existence. Hall's theorem underpins König's theorem, the deficiency version of Hall's theorem for partial matchings, and many algorithms in combinatorial optimization, including network flow duality.