Computing Generalized Convolutions Faster Than Brute Force

Abstract

In this paper, we consider a general notion of convolution. Let D be a finite domain and let Dn be the set of n-length vectors (tuples) of D. Let f : D × D D be a function and let f be a coordinate-wise application of f. The f-Convolution of two functions g,h : Dn \-M,…,M\ is (g f h)(v) := Σvg,vh ∈ Dn\\ s.t. vg f vh g(vg) · h(vh) for every v ∈ Dn. This problem generalizes many fundamental convolutions such as Subset Convolution, XOR Product, Covering Product or Packing Product, etc. For arbitrary function f and domain D we can compute f-Convolution via brute-force enumeration in O(|D|2npolylog(M)) time. Our main result is an improvement over this naive algorithm. We show that f-Convolution can be computed exactly in O((c · |D|2)npolylog(M)) for constant c := 3/4 when D has even cardinality. Our main observation is that a cyclic partition of a function f : D × D D can be used to speed up the computation of f-Convolution, and we show that an appropriate cyclic partition exists for every f. Furthermore, we demonstrate that a single entry of the f-Convolution can be computed more efficiently. In this variant, we are given two functions g,h : Dn \-M,…,M\ alongside with a vector v ∈ Dn and the task of the f-Query problem is to compute integer (g f h)(v). This is a generalization of the well-known Orthogonal Vectors problem. We show that f-Query can be computed in O(|D|ω2 npolylog(M)) time, where ω ∈ [2,2.372) is the exponent of currently fastest matrix multiplication algorithm.

0

Turn this paper into a lesson

ArcXiv compiles a structured reading guide from this paper's metadata: plain-English importance, contributions, prerequisite concepts, which sections to read first, flashcards, and a quiz. Grounded in the abstract, never invented.

Discussion (0)

Sign in to join the discussion.

Loading comments…