  Connectivity (or equivalently, unweighted maximum flow) is an important
measure in graph theory and combinatorial optimization. Given a graph $G$ with
vertices $s$ and $t$, the connectivity $\lambda(s,t)$ from $s$ to $t$ is
defined to be the maximum number of edge-disjoint paths from $s$ to $t$ in $G$.
  Much research has gone into designing fast algorithms for computing
connectivities in graphs. Previous work showed that it is possible to compute
connectivities for all pairs of vertices in directed graphs with $m$ edges in
$\tilde{O}(m^\omega)$ time [Chueng, Lau, and Leung, FOCS 2011], where $\omega
\in [2,2.3716)$ is the exponent of matrix multiplication. For the related
problem of computing "small connectivities," it was recently shown that for any
positive integer $k$, we can compute $\min(k,\lambda(s,t))$ for all pairs of
vertices $(s,t)$ in a directed graph with $n$ nodes in $\tilde{O}((kn)^\omega)$
time [Akmal and Jin, ICALP 2023].
  In this paper, we present an alternate exposition of these
$\tilde{O}(m^\omega)$ and $\tilde{O}((kn)^\omega)$ time algorithms, with
simpler proofs of correctness. Earlier proofs were somewhat indirect,
introducing an elegant but ad hoc "flow vector framework" for showing
correctness of these algorithms. In contrast, we observe that these algorithms
for computing exact and small connectivity values can be interpreted as testing
whether certain generating functions enumerating families of edge-disjoint
paths are nonzero. This new perspective yields more transparent proofs, and
ties the approach for these problems more closely to the literature surrounding
algebraic graph algorithms.
