This is also known as the Marriage Theorem.

Hall’s Theorem

Given a Bipartite Graph , there is a matching that matches all unless there exists such that .

We extend the definition of a neighborhood of vertices to some set , such that

Proof:

Start with a maximum matching. If it matches everything on , we are done. Otherwise, there is some unmatched vertex . If , then we are done. Suppose not, then every must have been matched already. Let be that matching.

graph LR;
	v((v)) o--o w((w));
	w o--o v1((v1));
	v1 o--o w1((w1));

Consider . If there is some that has not been matched, we can match , freeing , allowing us to match . On the other hand, may have already been matched. We can repeat this for some .

This creates an augmenting path, where

where the edges are and are in the matching, and vertices are unmatched. The picture here is that

graph LR;
	v0((v0)) -.- w0((w0));
	v1((v1)) o--o w0;
	v1 -.-w1((w1));
	v2((v2)) o--o w1((w1));
	v2 -..-|and so on| wk1;
	vk((vk)) o--o wk1(("w(k-1)"))
	vk((vk)) -.- wk((wk));

Lemma: If the matching has an augmenting path, then it is not maximum.

The proof of this is that we can replace these edges by a bunch of edges which are represented by the dotted lines. In particular, we will now have edges, which is a larger matching set and is a contradiction.

Back to the proof, we know that must have no augmenting path. Otherwise, we have a contradiction from the lemma.

So, consider

graph LR;
	v((v)) o-.-o Nv[["N(v)"]];
	v o-.-o Nv;
	v o-.-o Nv;
	v o-.-o Nv;
	v o-.-o Nv;
	v o-.-o Nv;
	Nv o--o NNv[["N(N(v))"]];
	Nv o--o NNv;
	Nv o--o NNv;
	Nv o--o NNv;
	Nv o--o NNv;
	Nv o--o NNv;
	NNv o-.-o NNNv[["NNN(v)"]];
	NNv o-.-o NNNv;
	NNv o-.-o NNNv;
	NNv o-.-o NNNv;
	NNv o-.-o NNNv;
	NNv o-.-o NNNv;

and so on. Every one of these vertices must be matched to ensure no augmenting path is possible. Consider every that are candidates for some augmenting path (all vertices in odd for . All such are matched. Indeed, let be the set of such vertices. Let

Firstly, because the vertices in are vertices matched to , and . Secondly, . In particular, we will have found , which means there is no matching, a contradiction.

Proposition (Regular Bipartite Has Perfect Matching)

Every non-empty regular bipartite graph has a perfect matching. That is, there is a matching that matches all vertices.

Proof:

Let the graph be regular. We apply the Bipartite Handshake Lemma.

Now, it is sufficient to show that for any subset , holds, and that by Hall’s Theorem, there is a matching. Let be some subset, and let be the [[Graph#Definition (Induced Subgraph)]|induced subgraph]] on . In , every vertex in has degree . For , then . By the Bipartite Handshake Lemma,

which indicates there is a matching. And as , there must be a perfect matching.

Lemma (Matching Max Degree Left Vertices)

There exists a matching that matches all of the maximum degree left-vertices.

Proof:

Let where has . We can consider . By Hall’s Theorem, there is a matching for the LHS vertices, unless where .

Consider of just . By Bipartite Handshake Lemma,

but this is a contradiction.