## Lecture 11: Perfect Matchings using Matrix Methods

A couple things:

• Jason pointed out that one can use Lovasz’ basic idea with binary search to actually reduce the number of calls from $m$ to $O(n \log n)$, and hence get an $\widetilde{O}(n^{\omega+1})$ algorithm using very basic techniques.His approach is this: suppose we know that the graph $G$ has a perfect matching. Then pick a vertex $v$ and test whether there exists a perfect matching that uses only the first half of its incident edges. If so, recurse using that half of the edges; if not, recurse using the other half. We will do only $O(\log n)$ queries before we find an edge matching $v$ to someone in a perfect matching. Hence the claim of $O(n \log n)$ tests!
• Also, the idea to compute the inverse of a matrix $A_{-j,-1}$ from $A^{-1}$ in $O(n^2)$ time is based on the following observation. Suppose

$A = \begin{bmatrix}a_{1,1} & u^T\\v & B\end{bmatrix}$

is non-singular with $a_{1,1} \neq 0$, and

$A^{-1} = \begin{bmatrix}\hat{a}_{1,1} & \hat{u}^T\\\hat{v} & \hat{B}\end{bmatrix}$.

Then

$B^{-1} = \hat{B} - (\hat{u}\hat{v}^T)/\hat{a}_{1,1}$.

Just using this idea along with the Rabin-Vazirani approach gives an $O(n^3)$ algorithm, since we need to compute n inverses, each taking $O(n^2)$ time. Mucha and Sankowski showed how to speed this up to find a perfect matching in $O(n^\omega)$ time.

• Finally, we only saw the proofs for bipartite graphs in lecture, the general graph case also goes through with more work.