Simple Lattice Basis Computation -- The Generalization of the Euclidean Algorithm
Abstract
The Euclidean algorithm is one of the oldest algorithms known to mankind. Given two integral numbers a1 and a2, it computes the greatest common divisor (gcd) of a1 and a2 in a very elegant way. From a lattice perspective, it computes a basis of the sum of two one-dimensional lattices a1 Z and a2 Z as (a1,a2) Z = a1 Z + a2 Z. In this paper, we show that the classical Euclidean algorithm can be adapted in a very natural way to compute a basis of a general lattice L(a1, … , am) given vectors a1, … , am ∈ Zn with m> rank(a1, … ,am). Similar to the Euclidean algorithm, our algorithm is very easy to describe and implement and can be written within 12 lines of pseudocode. While the Euclidean algorithm halves the largest number in every iteration, our generalized algorithm halves the determinant of a full rank subsystem leading to at most ( B) many iterations, for some initial subsystem B. Therefore, we can compute a basis of the lattice using at most O((m-n)n( B) + mnω-1(||A||∞)) arithmetic operations, where ω is the matrix multiplication exponent and A = (a1, …, am). Even using the worst case Hadamard bound for the determinant, our algorithm improves upon existing algorithm. Another major advantage of our algorithm is that we can bound the entries of the resulting lattice basis by O(n2· ||A||∞) using a simple pivoting rule. This is in contrast to the typical approach for computing lattice basis, where the Hermite normal form (HNF) is used. In the HNF, entries can be as large as the determinant and hence can only be bounded by an exponential term.
Turn this paper into a full lesson
ArcXiv compiles a staged curriculum from this paper: 8-12 lessons across beginner → advanced, synthesised section guides, visuals, flashcards, a quiz, exercises, and on-demand deep dives per section. Grounded in the abstract, never invented.