5 ms·
For context, LLL was used to prove that polynomial factorization can be solved in polynomial time. That is, given r(x) such that: r(x) = p(x) * q(x) wher
by abetusk 9y ago
For context, LLL was used to prove that polynomial factorization can be solved in polynomial time. That is, given r(x) such that:
r(x) = p(x) * q(x)
where the coefficients of each factor are integral:
p_i, q_i in Z
LLL can be used to find p(x) and q(x) only given r(x).
There are other problems that LLL solves and there are more modern lattice reduction algorithms (PSLQ, etc.) but LLL was one of the first.
- cperciva 9y agoThere are other problems that LLL solves My favourite is integer relationship finding. For example, if you stumble across the value 194.927424491 it's straightforward to figure out that it is pi * 23 + e * 29 + sqrt(2) * 31.
- aruss 9y agoSo, solving CVP? That's a pretty neat application, though.
- pbsd 9y agoThe typical way you'd solve that would be to take [K * pi 1 0 0] [K * e 0 1 0] [K * sqrt(2) 0 0 1] [K * 194.927424491 0 0 0] for some large-ish K, say 2^20, and look for a short(est) vector of this lattice. Basically you're minimizing the norm of (a * pi + b * e + c * sqrt(2) + d * 194.927424491, a, b, c) while giving the majority of the weight to the first component, which you hope to be near 0.
- cperciva 9y agolook for a short(est) vector of this lattice Just to elaborate slightly on this: Finding the shortest vector in a lattice is (in general) hard, but finding a vector which is no more than a constant times the length of the shortest vector is easy. So techniques which rely on lattice reduction usually construct a lattice such that the shortest vector is much shorter than the second-shortest vector -- in other words, the shortest vector is the only one which satisfies the "no more than X times the length of the shortest vector" condition. In the case of integer relation finding, this translates into having enough digits and making the value K large enough.