Abstract: We present an algorithm that, with high probability, generates a random
spanning tree from an edge-weighted undirected graph in
$\tilde{O}(n^{4/3}m^{1/2}+n^{2})$ time (The $\tilde{O}(\cdot)$ notation hides
$\operatorname{polylog}(n)$ factors). The tree is sampled from a distribution
where the probability of each tree is proportional to the product of its edge
weights. This improves upon the previous best algorithm due to Colbourn et al.
that runs in matrix multiplication time, $O(n^ω)$. For the special case of
unweighted graphs, this improves upon the best previously known running time of
$\tilde{O}(\min\{n^ω,m\sqrt{n},m^{4/3}\})$ for $m \gg n^{5/3}$ (Colbourn
et al. '96, Kelner-Madry '09, Madry et al. '15).
The effective resistance metric is essential to our algorithm, as in the work
of Madry et al., but we eschew determinant-based and random walk-based
techniques used by previous algorithms. Instead, our algorithm is based on
Gaussian elimination, and the fact that effective resistance is preserved in
the graph resulting from eliminating a subset of vertices (called a Schur
complement). As part of our algorithm, we show how to compute
$ε$-approximate effective resistances for a set $S$ of vertex pairs via
approximate Schur complements in $\tilde{O}(m+(n + |S|)ε^{-2})$ time,
without using the Johnson-Lindenstrauss lemma which requires $\tilde{O}(
\min\{(m + |S|)ε^{-2}, m+nε^{-4} +|S|ε^{-2}\})$ time. We
combine this approximation procedure with an error correction procedure for
handing edges where our estimate isn't sufficiently accurate.