我似乎找不到解决这个问题的方法。让我们将Z^2设置为R^2中的整数格子。给定一个有理射线(即斜率为有理数的向量),是否有一种快速方法来计算此向量最接近的格点,以正交距离表示?这种方法能否推广到R^n中的超平面?
您的问题似乎没有很好地定义。您如何定义到一个向量的距离? 如果您正在询问从晶格到方向为有理向量的线的最近距离(如您的概括所示),那么由于有理性,答案为零:您的方向是D =(n1 / d1,n2 / d2)。然后,点(d2 * n1,d1 * n2)在该直线上。对于最小的非零距离:我们可以假设d1 = d2 = d:D =(n1 / d,n2 / d)(您可以通过设置例如d = d1 * d2来获得)。现在,从单位网格晶格到线的可能距离为(Z * n1 + Z * n2)/ d =(Z * gcd(n1,n2))/ d,其中Z是整数集。 (这是Bézout定理的结果)。因此,最小的非零距离是gcd(n1,n2)/ d,其中gcd(。,。)给出两个整数的最大公约数。