A weighting integer relation algorithm

58 Views Asked by At

In the context of modular arithmetics, I'm looking for an integer relation algorithm that can consider weights. Typcially, as is the case for PSLQ, all coefficients are kept the same order of magnitude. What I'm looking for instead is an algorithm that, given a specific potential relation

$$ a_1x_1 + a_2x_2 + \ldots + a_nx_n \approx 0 $$

and a set of weights $W=\{w_1, w_2,\ldots, w_n\}$ would return an integer relation so that $x_kw_k\approx 1 $ (with the the tradeoff magnitude/error for $x_kw_k$ possibly adjustable).

It's often overlooked that integer relation algorithms can not only find relations between real numbers, but that they are true generalizations of the euclidean algorithm and find multivariate generalizations of Bezout's identity. This can be used in modular arithmetics, when one is looking for a small solution of

$$ a_1x_1 + a_2x_2 + \ldots + a_nx_n \equiv 0\mod m $$

which can be simply restated as:

$$ a_1x_1 + a_2x_2 + \ldots + a_nx_n + mx_{n+1} \approx 0 $$

However, given integer relation algorithms will then try to keep $x_{n+1}$ small, which is not exactly what I want.

How I arrived at this question

In the context of the shortest vector problem (SVP), it's obvious that every lattice vector also satisfies Smith's normal form. A (not fully, but mostly general) case would be that Smith's normal form of the lattice's Gram Matrix (as it is sometimes called) is all $1$'s on the diagonal, except for the rightmost element, which is a large number. As it turns out, the SVP so translates to a task similar to the one above.

What I attempted to answer the question

I searched here and in the literature, and I tried to understand the python implementation of PSLQ (without much success). I think it is possible to modify PSLQ in such a way.

e6ef8dfb2d25662d0680383028325656007802b1