Approximate integer programming is the following: For a convex body $K \subseteq \mathbb{R}^n$, either determine whether $K \cap \mathbb{Z}^n$ is empty, or find an integer point in the convex body scaled by $2$ from its center of gravity $c$. Approximate integer programming can be solved in time $2^{O(n)}$ while the fastest known methods for exact integer programming run in time $2^{O(n)} \cdot n^n$. So far, there are no efficient methods for integer programming known that are based on approximate integer programming. Our main contribution are two such methods, each yielding novel complexity results. First, we show that an integer point $x^* \in (K \cap \mathbb{Z}^n)$ can be found in time $2^{O(n)}$, provided that the remainders of each component $x_i^* \mod{\ell}$ for some arbitrarily fixed $\ell \geq 5(n+1)$ of $x^*$ are given. The algorithm is based on a cutting-plane technique, iteratively halving the volume of the feasible set. The cutting planes are determined via approximate integer programming. Enumeration of the possible remainders gives a $2^{O(n)}n^n$ algorithm for general integer programming. This matches the current best bound of an algorithm by Dadush (2012) that is considerably more involved. Our algorithm also relies on a new asymmetric approximate Carath\'eodory theorem that might be of interest on its own. Our second method concerns integer programming problems in equation-standard form $Ax = b, 0 \leq x \leq u, \, x \in \mathbb{Z}^n$ . Such a problem can be reduced to the solution of $\prod_i O(\log u_i +1)$ approximate integer programming problems. This implies, for example that knapsack or subset-sum problems with polynomial variable range $0 \leq x_i \leq p(n)$ can be solved in time $(\log n)^{O(n)}$. For these problems, the best running time so far was $n^n \cdot 2^{O(n)}$.
翻译:近似整数编程如下: 对于一个 comvex 机构 $K\ sublicalqualb{rn美元, 要么确定 $K\ cap\ mathb ⁇ n$是空的, 要么在 convex 机构中找到一个整数点, 从重力中心 $c美元, 大约整数编程可以及时解决 $ ⁇ O(n) 美元, 而已知精确整数编程在时间运行的最快方法 $%O(n)\ kdostn) 。 到目前为止, 目前没有已知的以近似整数程序编程为基础的有效方法。 我们的主要贡献是两种这样的方法, 每一个产生新的复杂结果。 首先, 我们显示一个整数点 $x\\ 美元 (n) 在时间里可以找到 $x\\\\ = =x\\ mox kell kell fal_ mail max max mail mail max a mill lix lix a prial ligimal a pal lizeal a ligudeal a ligle ligal a 。 ligudeal a pre a pal a le a ligudeal a pal a pal a ligle a liglex_