Let M be the generator matrix of a $N\times N$ lattice, and $\tilde{N}$ the set of Voronoi relevant vectors. The Voronoi cell for the origin can be written as $\text{Vor}_{\bf 0}(M)=\left\{{\bf x}: |{\bf x}|\leq|{\bf x-c}|\text{ for } \forall {\bf c}\in \tilde{N}\right\}$. My question is given $\tilde{N}$, how to find the closest lattice vector for a given point ${\bf x}\in R^N$? Equivalently, given $\tilde{N}$, how to translate the given point ${\bf x}$ back to $\text{Vor}_{\bf 0}$?
If $\tilde{N}$ is not given, the closest point can be found with the algorithm introduced here, and the same algorithm can be modified to find $\tilde{N}$. The motivation for my question is that I would like to find the closest points for a large number of ${\bf x}$'s, for the same lattice. Running the closest point search algorithm is very expensive, hence I am hoping to use relevant vectors to find the closest points.
This is my attempt to translate a given point ${\bf x}$ back to $\text{Vor}_{\bf 0}$ given the relevant vectors $\tilde{N}$
for c in $\tilde{N}$
overlap = x^T * c/norm(c)^2
if abs(overlap) > 1/2
x = x - round(overlap) * c
end
end
which seems working for 2D lattices, but not for 3D lattices. Hence I am not sure if the algorithm is correct, or if it is possible to do that for general lattices.