Tutte's theorem #
Main definitions #
SimpleGraph.TutteViolator G u
is a set of verticesu
such that the amount of odd components left after deletingu
fromG
is larger than the number of vertices inu
. This certifies non-existence of a perfect matching.
Main results #
SimpleGraph.tutte
states Tutte's theorem: A graph has a perfect matching, if and only if no Tutte violators exist.
A set certifying non-existence of a perfect matching
Equations
- G.IsTutteViolator u = (u.ncard < (⊤.deleteVerts u).coe.oddComponents.ncard)
Instances For
If the universal vertices of a graph G
decompose G
into cliques such that the Tutte isn't
violated, then G
has a perfect matching.
Proves the necessity part of Tutte's theorem
From a graph on an even number of vertices with no perfect matching, we can remove an odd number of vertices such that there are more odd components in the resulting graph than vertices we removed.
This is the sufficiency side of Tutte's theorem.
Tutte's theorem
A graph has a perfect matching if and only if: For every subset u
of vertices, removing this
subset induces at most u.ncard
components of odd size. This is formally stated using the
predicate IsTutteViolator
, which is satisfied exactly when this condition does not hold.