Fast computation of permanents over $\mathbb{F}_3$ via $\mathbb{F}_2$ arithmetic
Danny Scheinerman
TL;DR
This work tackles the hard problem of computing the permanent over the finite field $\\mathbb{F}_3$ by embedding $\\mathbb{F}_3^n$ into a pair of $\\mathbb{F}_2^n$ vectors, enabling fast binary operations through a bipedal representation. It adapts Ryser's Gray-code-based formula to operate modulo $3$ using these bitwise representations, and provides a high-performance Julia implementation that achieves substantial speedups (roughly an $80\times$ improvement on sizable instances) and supports large-scale parallel runs. The authors demonstrate the practicality of their approach with timing studies and a large parallel computation example, and they use Monte Carlo experiments to investigate the distribution of $\\text{perm}(A)$ for random $A \\in \\mathbb{F}_3^{n\times n}$, providing evidence for a conjectured uniform limit. Overall, the paper presents a concrete, scalable method for permanent computation mod $3$ with implications for probabilistic and combinatorial analysis over finite fields.
Abstract
We present a method of representing an element of $\mathbb{F}_3^n$ as an element of $\mathbb{F}_n^2 \times \mathbb{F}_n^2$ which in practice will be a pair of unsigned integers. We show how to do addition, subtraction and pointwise multiplication and division of such vectors quickly using primitive binary operations (and, or, xor). We use this machinery to develop a fast algorithm for computing the permanent of a matrix in $\mathbb{F}_3^{n\times n}$. We present Julia code for a natural implementation of the permanent and show that our improved implementation gives, roughly, a factor of 80 speedup for problems of practical size. Using this improved code, we perform Monte Carlo simulations that suggest that the distribution of $\mbox{perm}(A)$ tends to the uniform distribution as $n \to \infty$.
