The Euclidean algorithm is the oldest algorithms known to mankind. Given two integral numbers $a_1$ and $a_2$, it computes the greatest common divisor (gcd) of $a_1$ and $a_2$ in a very elegant way. From a lattice perspective, it computes a basis of the sum of two one-dimensional lattices $a_1 \mathbb{Z}$ and $a_2 \mathbb{Z}$ as $\gcd(a_1,a_2) \mathbb{Z} = a_1 \mathbb{Z} + a_2 \mathbb{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(A_1, \ldots , A_n)$ given vectors $A_1, \ldots , A_n \in \mathbb{Z}^d$ with $n> \mathrm{rank}(a_1, \ldots ,a_d)$. Similar to the Euclidean algorithm, our algorithm is very easy to describe and implement and can be written within 12 lines of pseudocode. As our main result, we obtain an algorithm to compute a lattice basis for given vectors $A_1, \ldots , A_n \in \mathbb{Z}^d$ in time (counting bit operations) $LS + \tilde{O}((n-d)d^2 \cdot \log(||A||)$, where $LS$ is the time required to obtain the exact fractional solution of a certain system of linear equalities. The analysis of the running time of our algorithms relies on fundamental statements on the fractionality of solutions of linear systems of equations. So far, the fastest algorithm for lattice basis computation was due to Storjohann and Labhan [SL96] having a running time of $\tilde{O}(nd^\omega\log ||A||)$. For current upper bounds of $LS$, our algorithm has a running time improvement of a factor of at least $d^{0.12}$ over [SL96]. Our algorithm is therefore the first general algorithmic improvement to this classical problem in nearly 30 years. At last, we present a postprocessing procedure which yields an improved size bound of $\sqrt{d} ||A||$ for vectors of the resulting basis matrix.
翻译:欧几里得算法是人类已知最古老的算法。给定两个整数 $a_1$ 和 $a_2$,该算法能以极其优雅的方式计算二者的最大公约数(gcd)。从格的角度看,它计算了两个一维格 $a_1 \mathbb{Z}$ 与 $a_2 \mathbb{Z}$ 之和的基:$\gcd(a_1,a_2) \mathbb{Z} = a_1 \mathbb{Z} + a_2 \mathbb{Z}$。本文证明,经典欧几里得算法可通过一种非常自然的方式推广,用于计算由向量 $A_1, \ldots , A_n \in \mathbb{Z}^d$(其中 $n> \mathrm{rank}(a_1, \ldots ,a_d)$)生成的一般格 $L(A_1, \ldots , A_n)$ 的基。与欧几里得算法类似,本文提出的算法描述与实现极为简便,仅需12行伪代码即可完整表述。作为主要成果,我们得到一种可在 $LS + \tilde{O}((n-d)d^2 \cdot \log(||A||)$ 时间(按位操作计数)内为给定向量 $A_1, \ldots , A_n \in \mathbb{Z}^d$ 计算格基的算法,其中 $LS$ 为求解特定线性等式系统精确分数解所需的时间。算法运行时间的分析基于线性方程组解分数性质的基本结论。迄今为止,最快的格基计算算法由 Storjohann 和 Labhan [SL96] 提出,其运行时间为 $\tilde{O}(nd^\omega\log ||A||)$。根据当前 $LS$ 的上界,本算法相比 [SL96] 实现了至少 $d^{0.12}$ 倍的加速。因此,本算法是该经典问题近30年来首个通用算法改进。最后,我们提出一种后处理流程,可使结果基矩阵向量的尺寸界优化至 $\sqrt{d} ||A||$。