# Existence of bipartite perfect matching

Let $B = G(L, R, E)$ be a bipartite graph. I want to find out whether this graph has a perfect matching. One way to test whether this graph has a perfect matching is Hall's Marriage Theorem, but it is inefficient (i.e $|\mathcal P(L)| = 2^{|L|}$ tests -- not polynomial). I can always find out whether a perfect matching exists by computing a maximum cardinality matching and testing its perfectness, but this involves computing that perfect matching.

Is there an efficient way of deciding whether a perfect bipartite matching exists without computing the matching it self? Ideally I would want an algorithm which is faster than algorithms like Hopcroft Karp or matrix based matching algorithms, which explicitly find out the matching (i.e so not computing the matching makes sense).

Edit: The italic part.

• You can use Hall's theorem, or use max flow algorithm to detect it. Mar 29, 2013 at 12:18
• Max flow algorithm computes the matching so it is not an answer to the question I am asking , and Hall's theorem is out of question for reasons stated above (if you can get away without making exponential tests, I would be glad to know how).
– Me.
Mar 29, 2013 at 12:20
• There is also a theorem which stands that grep has perfect matching if $|G| = 2 v(G)$, where $v$ is Matching number but it also requires some computation. Mar 29, 2013 at 12:27
• Isn't that just the definition of perfect matching? Besides that is hardly any efficient: en.wikipedia.org/wiki/…
– Me.
Mar 29, 2013 at 12:49

A quick literature review suggests that the fastest algorithm for deciding whether a dense bipartite graph has a perfect matching is still the matrix algorithm, which runs in time $$O(|V|^\omega)$$. You can reduce the space of the algorithm, see Isolation, Matching and Counting by Allender, Reinhardt and Zhou. A recent paper from 2010, which focuses on planar graphs, suggests that the result of Allender et al. is the best that is known.