1
$\begingroup$

Let $A \in \mathbb{R}^{d\times d}$ be an invertible matrix. Consider the set $$P_d := A\mathbb{Z}^d = \{A x| x \in \mathbb{Z}^d \} \subset \mathbb{R}^d$$. and $$ Q_d := [-1,1]^d.$$

I am interest in enumerating (not just counting) all the points in $$Q_d \cap P_d.$$

Unfortunately I am not familiar with discrete mathematics/optimization and related subjects. Hence I would appreciate pointers to established methods/algorithms and literature, that are suited to tackle this problem.

Thank you.

$\endgroup$
1
  • $\begingroup$ I am not an expert on optimization, but what are your goals here? How important is accuracy (e.g. is it OK if you only get 98% of points?) How serious are the time/memory constraints? What can be said about the determinant, and perhaps the eigenvalues of A? What size of d are we talking about? How many points do you expect in the answer (10, 100, 1000, 10^10)? $\endgroup$ Commented May 18, 2015 at 14:54

1 Answer 1

3
$\begingroup$

Let $B = \left({A\atop -A}\right)$ be a matrix, whose rows are formed by the rows of matrices $A$ and $-A$. Then $$C = \{ x\in\mathbb{R}^d \mid Bx \leq u \},$$ where $u=(\underbrace{1,1,\dots,1}_{2d})^T$, is a convex polyhedron. Furthermore, $$Q_d \cap P_d = \{ Ax \mid x\in C\cap \mathbb{Z}^d \}$$ and thus the problem is reduced to enumerating the integral points in the polyhedron $C$.

There is a readily available software called LattE for lattice point enumeration, which can find the integral points of $C$ in the form of multivariate generating function (with the command "count --multivariate-generating-function"). While it requires elements of the matrix be integer, it is not hard to achieve that by taking an appropriate rational approximations and multiplying $Bx\leq u$ by an integer constant to make all entries integer.

See LattE documentation for further references and examples.

$\endgroup$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .