# A fixed point iterative approach to integer programming and its distributed computation

## Abstract

Integer programming is concerned with the determination of an integer or mixed-integer point in a polytope. It is an NP-hard problem and has many applications in economics and management. Although several popular methods have been developed for integer programming in the literature and extensively utilized in practices, it remains a challenging problem and appeals for more endeavors. By constructing an increasing mapping satisfying certain properties, we develop in this paper an alternative method for integer programming, which is called a fixed point iterative method. Given a polytope, the method, within a finite number of iterations, either yields an integer or mixed-integer point in the polytope or proves no such point exists. As a very appealing feature, the method can easily be implemented in a distributed way. Furthermore, the construction implies that determining the uniqueness of Tarski’s fixed point is an NP-hard problem, and the method can be applied to compute all integer or mixed-integer points in a polytope and directly extended to convex nonlinear integer programming. Preliminary numerical results show that the method seems promising.

## 1 Introduction

Integer programming is concerned with the determination of an integer or mixed-integer point in a polytope. As a powerful mechanism, integer programming has been extensively applied in economics [1, 2] and management . Integer programming is an NP-complete problem . To solve such a problem, several methods have been developed in the literature. As an application of linear programming, the cutting plane method was pioneered in . The method iteratively refines a feasible set or objective function by means of linear inequalities. The branch-and-bound method was formulated in . The method gradually improves upper and lower bounds of the objective function by solving linear programs and systematically enumerates candidate solutions in branches of a tree with the full set of candidate solutions at the root by checking against the upper and lower bounds. To test whether a given feasible integer point is optimal or not, the neighborhood method was proposed in [1, 2]. The method simply checks a minimal set of points in the neighborhood of a feasible point to determine whether one of them is in the polytope or yields a better objective function value. The basis-reduction method originates in [7, 8]. As that in a branch-and-bound method, the method searches for an integer point in a polytope along a set of vectors that forms a reduced basis. The simplicial method was developed in [9, 10]. The method starts from an arbitrary integer point in the space and follows a simplicial path that either leads to an integer point in a polytope or proves no such point exists when the polytope is in a specific form. Further developments of some of these methods and new methods can be found in the recent literature such as [3, 1118], and the references therein. These methods play an extremely important role in the development of integer programming, however, it remains a challenging problem and appeals for more endeavors. Thus, developing alternative integer programming methods is always an active research area.

Integer programming can be cast as a fixed point problem of an increasing mapping. More precisely, let be a binary relation on a nonempty set S. The pair $$(S,\preceq)$$ is a partially ordered set if is reflexive, transitive, and antisymmetric on S. A lattice is a partially ordered set $$(S,\preceq)$$, in which any two elements x and y have a least upper bound (supremum), $$\sup_{S}(x,y)=\inf\{z\in S \mid x\preceq z\mbox{ and }y\preceq z\}$$, and a greatest lower bound (infimum), $$\inf_{S}(x,y)=\sup\{z\in S \mid z\preceq x\mbox{ and }z\preceq y\}$$, in the set. A lattice $$(S,\preceq)$$ is complete if every nonempty subset of S has a supremum and an infimum in S. Let f be a mapping from S into itself. f is an increasing mapping if $$f(x)\preceq f(y)$$ for any x and y of S with $$x\preceq y$$. When $$(S,\preceq)$$ is a complete lattice and f is an increasing mapping, Tarski’s fixed point theorem  asserts that f has a fixed point in S. A significant feature of Tarski’s fixed point theorem is that S can be a finite set and there is no restriction on its topological structures. This feature has a profound implication for integer programming as evidenced in this paper. The computational complexity of Tarski’s fixed point theorem on $$(S,\leq)$$ has been studied in , and it is polynomial-time computable if the dimension is fixed. As an application of Tarski’s fixed point theorem to integer programming, an increasing-mapping approach was briefly described in . However, the approach is very primitive and can only update one coordinate at each iteration.

Let $$N=\{1,2,\ldots,n\}$$ and $$N_{0}=\{0,1,2,\ldots,n\}$$. For x and y of $$R^{n}$$, $$x\leq_{l}y$$ if either $$x=y$$ or both $$x_{i}=y_{i}$$, $$i=1,2,\ldots,k-1$$, and $$x_{k}< y_{k}$$ for some $$k\in N$$, and $$x\leq y$$ if $$x_{i}\leq y_{i}$$ for all $$i\in N$$, where $$\leq_{l}$$ is the lexicographic order on $$R^{n}$$ and ≤ is the componentwise order on $$R^{n}$$. Let S be any given finite set of $$R^{n}$$. Then $$(S,\leq_{l})$$ is a complete lattice. We now convert integer programming into the computation of fixed points of an increasing mapping from a finite lattice into itself, which leads to the fixed point iterative method proposed in this paper and is the driving force behind our research endeavors.

Consider $$P=\{x\in R^{2} \mid Ax\leq b\}$$ with

$$A =\left ( \textstyle\begin{array}{@{}c@{\quad}c@{}} -17 & 2\\ 6 & 5\\ -3 & -3 \end{array}\displaystyle \right )$$

and $$b = ( -8, 4, 7 )^{\top}$$. This polytope is illustrated in Figure 1.

Let $$D(P)$$ denote the set of all the integer points with $$x^{l}\leq x\leq x^{u}$$ in Figure 1. The idea is to define an increasing mapping h from $$D(P)$$ into itself such that at least $$h(x)\leq_{l}x$$ for any $$x\in D(P)$$ with $$x\notin P$$ and $$x\neq x^{l}$$ and that $$h(x^{*})=x^{*}$$ if and only if either $$x^{*}\in P$$ or $$x^{*}=x^{l}$$. Such a mapping is illustrated in Figure 1. This simple example stimulates the idea in this paper though the situation is far more complicated when the dimension is higher.

In this paper, with this constructing we develop a fixed point iterative method for integer programming. A self-dual technique is applied for a solution to a bounding linear program in the development. Given any polytope, within a finite number of iterations, the method either yields an integer or mixed-integer point in the polytope or proves no such point exists. Theoretically, one can make the method be a polynomial-time algorithm when the dimension is fixed. But a more appealing feature of the method is that it can easily be implemented in a distributed way. Furthermore, the construction implies that determining the uniqueness of Tarski’s fixed point is an NP-hard problem, and the method can be applied to compute all integer or mixed-integer points in a polytope and directly extended to convex nonlinear integer programming. Preliminary numerical results show that the method is promising, and may offer a comparable solution to integer programming though a comprehensive comparison with the existing methods is beyond the scope of this paper.

The rest of the paper is organized as follows. A fixed point iterative method is first developed for integer programming in Section 2. Then a distributed implementation of the method and the computation of all integer points in a polytope are discussed in Section 3. Preliminary numerical results are presented in Section 4.

## 2 A fixed point iterative method

Let

$$P=\bigl\{ x\in R^{n} \mid Ax+Gw\leq b\mbox{ for some }w\in R^{p}\bigr\} ,$$

where $$A\in R^{m\times n}$$ is an $$m\times n$$ integer matrix with $$n\geq 2$$, $$G\in R^{m\times p}$$ an $$m\times p$$ matrix, and b a vector of $$R^{m}$$. We assume throughout this paper that P is bounded and full dimensional. For a real number α, let $$\lfloor\alpha\rfloor$$ denote the greatest integer less than or equal to α. For $$x=(x_{1},x_{2},\ldots,x_{n})^{\top}\in R^{n}$$, let $$\lfloor x\rfloor=(\lfloor x_{1}\rfloor, \lfloor x_{2}\rfloor,\ldots,\lfloor x_{n}\rfloor)^{\top}$$.

Let $$x^{\mathrm{max}}=(x^{\mathrm{max}}_{1},x^{\mathrm{max}}_{2},\ldots,x_{n}^{\mathrm{max}})^{\top}$$ with $$x^{\mathrm{max}}_{j}=\max_{x\in P}x_{j}$$, $$j=1,2,\ldots,n$$, and $$x^{\mathrm{min}}=(x^{\mathrm{min}}_{1}, x^{\mathrm{min}}_{2},\ldots,x^{\mathrm{min}}_{n})^{\top}$$ with $$x^{\mathrm{min}}_{j}=\min_{x\in P}x_{j}$$, $$j=1,2,\ldots,n$$. Then $$x^{\mathrm{min}}\leq x\leq x^{\mathrm{max}}$$ for all $$x\in P$$. Let

$$D(P)=\bigl\{ x\in Z^{n} \mid x^{l}\leq x\leq x^{u} \bigr\} ,$$

where $$x^{u}=\lfloor x^{\mathrm{max}}\rfloor$$ and $$x^{l}=\lfloor x^{\mathrm{min}}\rfloor$$. Thus, $$D(P)$$ contains all integer points in P. We assume without loss of generality that $$x^{l}< x^{\mathrm{min}}$$ (let $$x_{i}^{l}=x_{i}^{\mathrm{min}}-1$$ if $$x_{i}^{l}=x_{i}^{\mathrm{min}}$$ for some $$i\in N$$) and that

$$x_{1}^{u}-x_{1}^{l}\leq x_{2}^{u}-x_{2}^{l}\leq\cdots\leq x_{n}^{u}-x_{n}^{l},$$

which can be obtained by interchanging the columns of A if necessary.

For $$z\in R^{n}$$ and $$k\in N_{0}$$, let

$$P(z,k)=\{x\in P \mid x_{i}=z_{i}, 1\leq i\leq k\mbox{ and }x_{i}\leq z_{i}, k+1\leq i\leq n\}.$$

Given an integer point $$y\in D(P)$$ with $$y_{1}>x_{1}^{l}$$, we present in the following a fixed point iterative method to determine whether there is an integer point $$x^{*}\in P$$ with $$x^{*}\leq_{l}y$$.

Initialization::

Let $$y^{0}=y$$, $$k=n-1$$, and $$q=0$$.

Step 1::

If $$y^{q}\in P$$ or $$y^{q}=x^{l}$$, Stop; else, go to Step 2.

Step 2::

If $$y^{q}_{i}\leq x_{i}^{l}$$ for some $$i\in N$$ or $$P(y^{q},k)=\emptyset$$, go to Step 5; else, go to Step 3.

Step 3::

Solve the linear program

\begin{aligned}& \max \sum_{j=k+1}^{n} x^{j}_{j} \\& \quad \mbox{subject to } x^{j}\in P\bigl(y^{q},k\bigr),\quad j=k+1,k+2,\ldots,n, \end{aligned}

to obtain the optimal value of $$x^{j}_{j}$$, denoted by $$x^{j}_{j}(y^{q})$$, $$j=k+1,k+2,\ldots,n$$, and go to Step 4.

Step 4::

If $$y^{q}_{j}> x^{j}_{j}(y^{q})$$ for some $$j\geq k+1$$, let $$y^{q+1}=(y_{1}^{q+1},y^{q+1}_{2},\ldots,y^{q+1}_{n})^{\top}$$ with

$$y^{q+1}_{i}=\left \{ \textstyle\begin{array}{l@{\quad}l} y^{q}_{i} & \mbox{if }1\leq i\leq k, \\ \lfloor x^{i}_{i}(y^{q})\rfloor& \mbox{if }k+1\leq i\leq n, \end{array}\displaystyle \right .$$

$$i=1,2,\ldots,n$$, and $$q=q+1$$, and go to Step 1; else, let $$k=k+1$$ and go to Step 3.

Step 5::

If $$k=0$$, let $$y^{q+1}=x^{l}$$ and $$q=q+1$$; else, let $$y^{q+1}=(y_{1}^{q+1},y^{q+1}_{2},\ldots,y^{q+1}_{n})^{\top}$$ with

$$y^{q+1}_{i}=\left \{ \textstyle\begin{array}{l@{\quad}l} y^{q}_{i} & \mbox{if }1\leq i\leq k-1, \\ y^{q}_{i}-1 & \mbox{if }i=k, \\ x^{u}_{i} & \mbox{if }k+1\leq i\leq n, \end{array}\displaystyle \right .$$

$$i=1,2,\ldots,n$$, $$q=q+1$$, and $$k=k-1$$. Go to Step 1.

At each iteration, the method needs to solve a bounding linear program, which may have no feasible solution. To effectively address this issue, one can apply the self-dual embedding technique in [22, 23] or any best available software packages. The following two examples illustrate how the method works.

### Example 1

Consider $$P=\{x\in R^{3} \mid Ax\leq b\}$$ with

$$A =\left ( \textstyle\begin{array}{@{}c@{\quad}c@{\quad}c@{}} -1 & 0 & 2\\ 0 & -2 & 1\\ -1 & 0 & -2\\ 1 & 1 & 0 \end{array}\displaystyle \right )$$

and $$b = ( 0, 1, 1, 0, )^{\top}$$. We have $$x^{u}=(1,0,0)^{\top}$$ and $$x^{l}=(-1,-2,-2)^{\top}$$.

Let $$y=x^{u}$$, $$y^{0}=y$$, and $$k=3-1=2$$.

Iteration 1::

Since $$P(y^{0},2)=\emptyset$$, we obtain from Step 5

$$y^{1}=\bigl(y^{0}_{1},y^{0}_{2}-1,x^{u}_{3} \bigr)^{\top}=(1,-1,0)^{\top}$$

and $$k=k-1=2-1=1$$.

Iteration 2::

Solving

\begin{aligned}& \max x_{2}^{2}+x_{3}^{3} \\& \quad \mbox{subject to } x^{j}\in P\bigl(y^{1},1\bigr), \quad j=2,3, \end{aligned}

we obtain $$x_{2}^{2}(y^{1})=-1$$ and $$x_{3}^{3}(y^{1})=-1$$. Since $$y^{1}_{3}=0>-1=x_{3}^{3}(y^{1})$$, we obtain from Step 4

$$y^{2}=\bigl(y^{1}_{1},\bigl\lfloor x_{2}^{2}\bigl(y^{1}\bigr)\bigr\rfloor ,\bigl\lfloor x_{3}^{3}\bigl(y^{1}\bigr)\bigr\rfloor \bigr)^{\top}=(1,-1,-1)^{\top},$$

which is an integer point in P.

An illustration of $$y^{0}$$, $$y^{1}$$, and $$y^{2}$$ can be found in Figure 2.

### Example 2

Consider $$P=\{x\in R^{3} \mid Ax\leq b\}$$ with

$$A =\left ( \textstyle\begin{array}{@{}c@{\quad}c@{\quad}c@{}} -4 & 3 & 2\\ -1 & 4 & -2\\ -1 & -5 & -1\\ 2 & 1 & 1 \end{array}\displaystyle \right )$$

and $$b = ( -2, 0, 1, 1)^{\top}$$. We have $$x^{u}=(1,0,0)^{\top}$$ and $$x^{l}=(0,-1,-2)^{\top}$$.

Let $$y=x^{u}$$, $$y^{0}=y$$, and $$k=n-1=2$$.

Iteration 1::

Since $$P(y^{0},2)=\emptyset$$, we obtain from Step 5

$$y^{1}=\bigl(y^{0}_{1},y^{0}_{2}-1,x^{u}_{3} \bigr)^{\top}=(1,-1,0)^{\top}$$

and $$k=k-1=2-1=1$$.

Iteration 2::

Since $$P(y^{1},1)=\emptyset$$, we obtain from Step 5

$$y^{2}=\bigl(y^{1}_{1}-1,x^{u}_{2},x^{u}_{3} \bigr)^{\top}=(0,0,0)^{\top}$$

and $$k=k-1=1-1=0$$.

Iteration 3::

Since $$P(y^{2},0)=\emptyset$$, we obtain from Step 5

$$y^{3}=x^{l}=(0,-1,-2)^{\top},$$

which shows that there is no integer point in P.

An illustration of $$y^{0}$$, $$y^{1}$$, $$y^{2}$$, and $$y^{3}$$ can be found in Figure 3.

For $$q=0,1,\ldots$$ , let $$k_{q}$$ denote the value of k at which the method determines $$y^{q}$$. Clearly, $$x^{l}-e\leq y^{q}\leq x^{u}$$ with $$e=(1,1,\ldots,1)^{\top}\in R^{n}$$.

### Lemma 1

For $$q=0,1,\ldots$$ ,

$$y^{q+1}\leq y^{q}\quad \textit{or}\quad y^{q+1} \leq_{l} y^{q}$$

with $$y^{q}\neq y^{q+1}$$.

### Proof

This lemma is proved in two cases.

Case 1: Suppose that $$P(y^{q},k_{q})=\emptyset$$. Then the method will perform Step 5. If $$k_{q}=0$$, we obtain from Step 5 that $$y^{q+1}=x^{l}$$, and consequently, $$y^{q+1}\leq y^{q}$$ with $$y^{q}\neq y^{q+1}$$. Assume that $$k_{q}>0$$. Then we obtain from Step 5 that $$y^{q+1}=(y_{1}^{q+1},y^{q+1}_{2},\ldots,y^{q+1}_{n})^{\top}$$ with

$$y^{q+1}_{i}=\left \{ \textstyle\begin{array}{l@{\quad}l} y^{q}_{i} & \mbox{if }1\leq i\leq k_{q}-1, \\ y^{q}_{i}-1 & \mbox{if }i=k_{q}, \\ x^{u}_{i} & \mbox{if }k_{q}+1\leq i\leq n, \end{array}\displaystyle \right .$$

$$i=1,2,\ldots,n$$. Thus, $$y^{q+1}_{k_{q}}< y^{q}_{k_{q}}$$. Therefore, $$y^{q+1}\leq_{l} y^{q}$$ with $$y^{q}\neq y^{q+1}$$.

Case 2: Suppose that $$P(y^{q},k_{q})\neq\emptyset$$. Then the method will repeatedly perform Steps 3 and 4 right before it goes to Step 1. Since $$y^{q}\notin P$$, as k increases one by one, it will reach a value $$k_{q+1}$$ such that $$y^{q}_{j}>x^{j}_{j}(y^{q})$$ for some $$j\geq k_{q+1}+1$$. When this occurs, we obtain from Step 4 that $$y^{q+1}=(y_{1}^{q+1},y^{q+1}_{2},\ldots,y^{q+1}_{n})^{\top}$$ with

$$y^{q+1}_{i}=\left \{ \textstyle\begin{array}{l@{\quad}l} y^{q}_{i} & \mbox{if }1\leq i\leq k_{q+1}, \\ \lfloor x^{i}_{i}(y^{q})\rfloor& \mbox{if }k_{q+1}+1\leq i\leq n, \end{array}\displaystyle \right .$$

$$i=1,2,\ldots,n$$. Moreover, one can see from Step 3 that

$$x_{j}^{j}\bigl(y^{q}\bigr)\leq y^{q}_{j}, \quad j=k_{q+1}+1,k_{q+1}+2, \ldots,n.$$

Therefore, $$y^{q+1}\leq y^{q}$$ with $$y^{q}\neq y^{q+1}$$. The proof is completed. □

### Theorem 1

Given an integer point $$y\in D(P)$$ with $$y_{1}>x_{1}^{l}$$, the method, within a finite number of iterations, either yields an integer point $$x^{*}\in P$$ with $$x^{*}\leq_{l} y$$ or proves no such point exists.

### Proof

Let y be any given integer point in $$D(P)$$ with $$y_{1}>x_{1}^{l}$$. Suppose that $$y\notin P$$ and there is some integer point $$z^{0}\in P$$ with $$z^{0}\leq_{l} y$$. We assume without loss of generality that $$z^{0}$$ is the largest integer point of P satisfying that $$z^{0}\leq_{l} y$$. Applying mathematical induction, we show in the following that $$z^{0}\leq_{l} y^{q}$$, $$q=1,2,\ldots$$ .

1. Consider the case of $$q=1$$. From the method, we know that $$k_{0}=n-1$$.

(a) Suppose that $$P(y^{0},k_{0})=\emptyset$$. Then the method will perform Step 5, and we obtain from Step 5 that $$y^{1}=(y_{1}^{1},y^{1}_{2},\ldots,y^{1}_{n})^{\top}$$ with

$$y^{1}_{i}=\left \{ \textstyle\begin{array}{l@{\quad}l} y^{0}_{i} & \mbox{if }1\leq i\leq n-2, \\ y^{0}_{i}-1 & \mbox{if }i=n-1, \\ x^{u}_{i} & \mbox{if }i= n, \end{array}\displaystyle \right .$$

$$i=1,2,\ldots,n$$, and $$k_{1}=n-2$$. If $$y_{i}^{0}>z^{0}_{i}$$ for some $$i\leq n-2$$, then $$z^{0}\leq_{l}y^{1}$$ with $$z_{j}^{0}< y^{1}_{j}$$ for some $$j\leq k_{1}$$. Assume that $$y_{i}^{0}=z^{0}_{i}$$ for all $$i\leq n-2$$. Then, from $$P(y^{0},k_{0})=\emptyset$$ and $$z^{0}\leq_{l} y^{0}$$, we derive that $$z^{0}_{n-1}< y_{n-1}^{0}$$ since otherwise $$P(y^{0},k_{0})\neq\emptyset$$. Therefore, $$z^{0}\leq y^{1}$$.

(b) Suppose that $$P(y^{0},k_{0})\neq\emptyset$$. Then the method will perform Steps 3 and 4. Since $$y^{0}\notin P$$, $$y^{0}_{n}>x^{n}_{n}(y^{0})$$. Thus, we obtain from Step 4 $$y^{1}=(y_{1}^{1},y^{1}_{2},\ldots,y^{1}_{n})^{\top}$$ with

$$y^{1}_{i}=\left \{ \textstyle\begin{array}{l@{\quad}l} y^{0}_{i} & \mbox{if }1\leq i\leq n-1, \\ \lfloor x^{n}_{n}(y^{0})\rfloor& \mbox{if }i= n, \end{array}\displaystyle \right .$$

$$i=1,2,\ldots,n$$, and $$k_{1}=n-1$$. If $$y_{i}^{0}>z^{0}_{i}$$ for some $$i\leq n-1$$, then $$z^{0}\leq_{l}y^{1}$$ with $$z^{0}_{j}< y^{1}_{j}$$ for some $$j\leq k_{1}$$. Assume that $$y^{0}_{i}=z_{i}^{0}$$ for all $$i\leq n-1$$. Then we derive from $$z^{0}\leq_{l} y^{0}$$ that $$z^{0}\in P(y^{0},k_{0})$$. Thus, $$z^{0}_{n}\leq \lfloor x^{n}_{n}(y^{0})\rfloor$$. Therefore, $$z^{0}\leq y^{1}$$.

2. Induction hypothesis: For any given $$1\leq h\leq q$$, we assume that $$y^{h}\notin P$$ and that $$z^{0}\leq y^{h}$$ or $$z^{0}\leq_{l}y^{h}$$ with $$z^{0}_{j}< y^{h}_{j}$$ for some $$j\leq k_{h}$$.

3. With this induction hypothesis, we prove in the following that $$z^{0}\leq y^{q+1}$$ or $$z^{0}\leq_{l} y^{q+1}$$ with $$z^{0}_{j}< y^{q+1}_{j}$$ for some $$j\leq k_{q+1}$$ under two cases.

Case 1: Suppose that $$P(y^{q},k_{q})=\emptyset$$. Then the method will perform Step 5. Assume that $$k_{q}=0$$. From the method, we know that Step 5 must be performed at least once before $$y^{q}$$ is generated. Let $$y^{q_{0}}$$ be the point obtained by the method in the last performance of Step 5 before $$y^{q}$$ is generated. Thus, $$k_{q_{0}}=k_{q}=0$$, $$k_{q_{0}-1}=1$$, and $$P(y^{q_{0}-1},k_{q_{0}-1})=\emptyset$$. From Step 5, we know that $$y^{q_{0}}=(y_{1}^{q_{0}},y^{q_{0}}_{2},\ldots,y^{q_{0}}_{n})^{\top}$$ with

$$y^{q_{0}}_{i}=\left \{ \textstyle\begin{array}{l@{\quad}l} y^{q_{0}-1}_{i}-1 & \mbox{if }i=1, \\ x^{u}_{i} & \mbox{if }2\leq i\leq n, \end{array}\displaystyle \right .$$

$$i=1,2,\ldots,n$$. This together with $$P(y^{q_{0}-1},k_{q_{0}-1})=\emptyset$$ and the induction hypothesis for $$h=q_{0}-1$$ leads to that $$z^{0}\leq y^{q_{0}}$$. If $$q=q_{0}$$, then $$z^{0}\leq y^{q}=y^{q_{0}}$$. Suppose that $$q>q_{0}$$. Then $$q=q_{0}+1$$ and the method will perform Steps 3 and 4 to generate $$y^{q}$$ right after $$y^{q_{0}}$$ is generated. Since $$k_{q}=k_{q_{0}}$$, the method will perform once Steps 3 and 4 to generate $$y^{q}$$. With $$k_{q}=0$$, we obtain from Step 4 that $$y^{q}=(y^{q}_{1},y^{q}_{2},\ldots,y^{q}_{n})^{\top}$$ with

$$y^{q}_{i}=\bigl\lfloor x^{i}_{i} \bigl(y^{q_{0}}\bigr)\bigr\rfloor ,\quad i=1,2,\ldots,n.$$

Thus, it follows from $$z^{0}\in P(y^{q_{0}},k_{q_{0}})$$ that $$z^{0}\leq y^{q}$$. Therefore, $$z^{0}\in P(y^{q},k_{q})$$. It contradicts with $$P(y^{q},k_{q})=\emptyset$$. So, we must have $$k_{q}>0$$.

From Step 5, we obtain $$y^{q+1}=(y_{1}^{q+1},y^{q+1}_{2},\ldots,y^{q+1}_{n})^{\top}$$ with

$$y^{q+1}_{i}=\left \{ \textstyle\begin{array}{l@{\quad}l} y^{q}_{i} & \mbox{if }1\leq i\leq k_{q}-1, \\ y^{q}_{i}-1 & \mbox{if }i=k_{q}, \\ x^{u}_{i} & \mbox{if }k_{q}+1\leq i\leq n, \end{array}\displaystyle \right .$$

$$i=1,2,\ldots,n$$, and $$k_{q+1}=k_{q}-1$$. If $$z^{0}_{i}< y^{q}_{i}$$ for some $$i\leq k_{q}-1$$, then $$z^{0}\leq_{l} y^{q+1}$$ with $$z^{0}_{j}< y^{q+1}_{j}$$ for some $$j\leq k_{q+1}$$. Suppose that $$y_{i}^{q}=z_{i}^{0}$$, $$i=1,2,\ldots,k_{q}-1$$. Hence, $$z_{k_{q}}^{0}< y^{q}_{k_{q}}$$ from the induction hypothesis since otherwise $$P(y^{q},k_{q})\neq\emptyset$$. Therefore, $$z^{0}\leq y^{q+1}$$.

Case 2: Suppose that $$P(y^{q},k_{q})\neq\emptyset$$. Then the method will repeatedly perform Steps 3 and 4 right before it goes to Step 1. Since $$y^{q}\notin P$$, as k increases one by one, it will reach a value $$k_{q+1}\geq k_{q}$$ such that $$y^{q}_{j}>x^{j}_{j}(y^{q})$$ for some $$j\geq k_{q+1}+1$$. When this occurs, we obtain from Step 4 that $$y^{q+1}=(y_{1}^{q+1},y^{q+1}_{2},\ldots,y^{q+1}_{n})^{\top}$$ with

$$y^{q+1}_{i}=\left \{ \textstyle\begin{array}{l@{\quad}l} y^{q}_{i} & \mbox{if }1\leq i\leq k_{q+1}, \\ \lfloor x^{i}_{i}(y^{q})\rfloor& \mbox{if }k_{q+1}+1\leq i\leq n, \end{array}\displaystyle \right .$$

$$i=1,2,\ldots,n$$. If $$z_{i}^{0}< y^{q}_{i}$$ for some $$i\leq k_{q}$$, then $$z^{0}\leq_{l}y^{q+1}$$ with $$z^{0}_{j}< y^{q+1}_{j}$$ for some $$j\leq k_{q+1}$$. Suppose that $$y^{q}_{i}=z_{i}^{0}$$ for all $$i\leq k_{q}$$. Thus, $$z^{0}\leq y^{q}$$ from the induction hypothesis for $$h=q$$.

• Consider $$k_{q+1}=k_{q}$$. Since $$z^{0}\in P(y^{q},k_{q})$$, $$z^{0}_{i}\leq\lfloor x^{i}_{i}(y^{q})\rfloor$$ for all $$k_{q+1}+1\leq i\leq n$$. Therefore, $$z^{0}\leq y^{q+1}$$.

• Consider $$k_{q+1}>k_{q}$$. If $$z^{0}_{i}< y^{q}_{i}$$ for some $$k_{q}< i\leq k_{q+1}$$, then it follows from Steps 3 and 4 that $$z^{0}\leq_{l}y^{q+1}$$ with $$z^{0}_{j}< y^{q+1}_{j}$$ for some $$j\leq k_{q+1}$$. Suppose that $$y^{q}_{i}=z^{0}_{i}$$ for all $$k_{q}< i\leq k_{q+1}$$. Since $$z^{0}\leq y^{q}$$, $$z^{0}\in P(y^{q},k_{q+1})$$ and consequently, $$z^{0}_{i}\leq\lfloor x^{i}_{i}(y^{q})\rfloor$$ for all $$k_{q+1}+1\leq i\leq n$$. Therefore, $$z^{0}\leq y^{q+1}$$.

The above results together with mathematical induction show that

$$z^{0}\leq_{l}y^{q},\quad q=1,2,\ldots.$$

From Lemma 1, we know that $$y^{q+1}\leq y^{q}$$ or $$y^{q+1}\leq_{l}y^{q}$$ with $$y^{q+1}\neq y^{q}$$. Therefore, within a finite number of iterations, the method meets $$z^{0}$$ since there are only a finite number of integer points in the set

$$\bigl\{ z\in Z^{n} \mid z^{0}\leq_{l} z \leq_{l} y\mbox{ and }x^{l}-e\leq z\leq x^{u}\bigr\} .$$

This completes the proof. □

As a corollary of Theorem 1, we come to the following conclusion.

### Corollary 1

Starting from $$y^{0}=x^{u}$$, the method, within a finite number of iterations, either yields an integer point in P or proves no such point exists.

## 3 Distributed computation and computing all integer points in a polytope

For any given positive integer ν, let $$x^{i}$$, $$i=1,2,\ldots,\nu$$, be a sequence of different integer points in $$D(P)$$ with $$x^{l}\leq x^{1}\leq_{l}x^{2}\leq_{l}\cdots\leq_{l}x^{\nu}=x^{u}$$. Then the method can easily be implemented in a distributed way by starting from $$x^{i}$$, $$i=1,2,\ldots,\nu$$, simultaneously.

The method can also be applied to compute all integer points in P, which is as follows.

Step 0::

Use the method starting from $$x^{u}$$ to compute an integer point in P. If no integer point has been found, Stop. Otherwise, let $$s^{1}$$ be the solution found by the method and $$g=1$$, and go to Step 1.

Step 1::

Let $$y^{0}=(y_{1}^{0},y_{2}^{0},\ldots,y^{0}_{n})^{\top}$$ with

$$y^{0}_{i}=\left \{ \textstyle\begin{array}{l@{\quad}l} s^{g}_{i} & \mbox{if }i< n, \\ s^{g}_{i}-1 & \mbox{if }i=n, \end{array}\displaystyle \right .$$

$$i=1,2,\ldots,n$$, and go to Step 2.

Step 2::

If $$y^{0}\in P$$, let $$s^{g+1}=y^{0}$$ and $$g=g+1$$, and go to Step 1. Otherwise, go to Step 3.

Step 3::

Use the method starting from $$y^{0}$$ to compute an integer point in P. If no integer point has been found, Stop. Otherwise, let $$s^{g+1}$$ be the solution found by the method and $$g=g+1$$, and go to Step 1.

## 4 Numerical results

In this section, we apply the method to determine whether there is an integer point in the polytope of the market split problem and the polytope of the 0-1 knapsack feasibility problem though a comprehensive comparison with the existing methods is beyond the scope of this paper. The method has been coded in C++ and run on a workstation of Lenovo ThinkStation D20 4155-BM4 with 16 processors. In our implementation of the method, each linear program is solved by the linear program solver of ILOG CPLEX with all the parameter values automatically set by ILOG CPLEX itself. We have also run ILOG CPLEX on the same problem instance and found that the branch-and-cut strategy is the best of ILOG CLEX. In the presentation of numerical results, NumLPs stands for the total number of linear programs solved by the method and the branch-and-cut strategy of ILOG CLEX for each instance. In the feasibility category, ‘Feasible’ appears if an instance has a feasible integer point and ‘Infeasible’ otherwise. In our numerical experiments, to convert a problem into an equivalent problem of determining whether there is an integer point in a full-dimensional polytope given by $$P=\{x\in R^{n} \mid Ax\leq b\}$$, we apply the basis-reduction algorithm of  in the same way as that in  and in the appendix with $$N_{1}=10\text{,}000$$ and $$N_{2}=100\text{,}000$$.

### Example 3

(The market split problem)

The market split problem given in  is to determine whether the system, $$Cx = d$$, has a 0-1 integer solution, where $$C=(c_{ij})$$ is a $$p\times q$$ (e.g., $$q=10(p-1)$$) nonnegative integer matrix and $$d=(d_{1},d_{2},\ldots,d_{p})^{\top}$$ is an integer vector given by $$d_{i}=\lfloor\sum_{j=1}^{n} c_{ij}/2\rfloor$$, $$i=1,2,\ldots,p$$. In our numerical experiments, $$c_{ij}\in[0, 99]$$, $$i=1,2,\ldots,p$$, $$j=1,2,\ldots,q$$, are generated randomly.

For the problem with $$p=5$$ and $$q=40$$, we have solved 25 instances using the method and the best CPLEX strategy. Numerical results for 25 instances of the problem are given in Table 1.

To demonstrate the capability of distributed computation of the method, we have implemented the method in a distributed way to solve the market split problem with $$p=6$$ and $$q=50$$. We divide the problem space into 32 parts and run 16 subproblems simultaneously on the workstation. In the presentation of numerical results, MAX NumLPs stands for either the largest number of linear programs consumed by the method for any of the 32 subproblems when an instance is infeasible or the smallest number of linear programs consumed by the method for the subproblem in which a feasible solution is found. Numerical results for five instances of the problem are given in Table 2.

### Example 4

(The 0-1 knapsack feasibility problem)

Find a 0-1 solution of $$p^{\top}x=d$$, where $$p=(p_{1},p_{2},\ldots,p_{n+1})^{\top}>0$$ and $$p_{i}\neq p_{j}$$ for all $$i\neq j$$. In our numerical experiments, $$p_{j}\in[10^{2}, 10^{4}]$$, $$j=1,2,\ldots,n+1$$, and $$d\in[10^{2}, 10^{4}]$$ are generated randomly. Numerical results of the method for this problem are given in Table 3.

This paper has no intention to make a comprehensive comparison of the proposed method with the existing methods. Nevertheless, one can see from these preliminary numerical results that the numbers of linear programs solved by the method for most instances of two specific problems are less than those of the best CPLEX strategy: branch and cut. An efficient implementation of the method requires a considerable amount of additional research, which is beyond the scope of this paper and will be carried out in another research project.

## References

1. Scarf, HE: Production sets with indivisibilities - Part I: generalities. Econometrica 49, 1-32 (1981)

2. Scarf, HE: Neighborhood systems for production sets with indivisibilities. Econometrica 54, 507-532 (1986)

3. Jünger, M, Liebling, TM, Naddef, D, Nemhauser, GL, Pulleyblank, WR, Reinelt, G, Rinaldi, G, Wolsey, LA: 50 Years of Integer Programming. Springer, Berlin (2010)

4. Garey, MR, Johnson, DS: Computers and Intractability: A Guide to the Theory of NP-Completeness. Freeman, San Francisco (1979)

5. Gomory, RE: Outline of an algorithm for integer solution to linear programs. Bull. Am. Math. Soc. 64, 275-278 (1958)

6. Land, AH, Doig, AG: An automatic method for solving discrete programming problems. Econometrica 28, 497-520 (1960)

7. Lenstra, HW Jr.: Integer programming with a fixed number of variables. Math. Oper. Res. 8, 538-548 (1983)

8. Lovász, L, Scarf, HE: The generalized basis reduction algorithm. Math. Oper. Res. 17, 751-764 (1992)

9. Dang, C: An arbitrary starting homotopy-like simplicial algorithm for computing an integer point in a class of polytopes. SIAM J. Discrete Math. 23, 609-633 (2009)

10. Dang, C, van Maaren, H: A simplicial approach to the determination of an integer point in a simplex. Math. Oper. Res. 23, 403-415 (1998)

11. Aardal, K, Hurkens, C, Lenstra, AK: Solving a system of linear Diophantine equations with lower and upper bounds on the variables. Math. Oper. Res. 25, 427-442 (2000)

12. Barvinok, AI: A polynomial time algorithm for counting integral points in polyhedra when the dimension is fixed. Math. Oper. Res. 19, 769-779 (1994)

13. Bertsimas, D, Weismantel, R: Optimization over Integers. Dynamic Ideas, Belmont (2005)

14. Burer, S, Vandenbussche, D: A finite branch-and-bound algorithm for nonconvex quadratic programming via semidefinite relaxations. Math. Program., Ser. A 113, 259-282 (2008)

15. Cornuéjols, G, Dawande, M: A class of hard small 0-1 programs. In: Integer Programming and Combinatorial Optimization. Lecture Notes in Computer Science, vol. 1412, pp. 284-293. Springer, Berlin (1998)

16. De Loera, JA, Hemmecke, R, Köppe, M, Weismantel, R: Integer polynomial optimization in fixed dimension. Math. Oper. Res. 31, 147-153 (2006)

17. Nemhauser, GL, Wolsey, LA: Integer and Combinatorial Optimization. Wiley, New York (1998)

18. Schrijver, A: Theory of Linear and Integer Programming. Wiley, New York (1998)

19. Tarski, A: A lattice-theoretical fixpoint theorem and its applications. Pac. J. Math. 5, 285-308 (1955)

20. Dang, C, Qi, Q, Ye, Y: Computational models and complexities of Tarski’s fixed points. Technical report (2011). http://www.stanford.edu/~yyye/unitarski1.pdf

21. Dang, C: An increasing-mapping approach to integer programming based on lexicographic ordering and linear programming. In: Du, DZ, Zhang, XS (eds.) The Ninth International Symposium on Operations Research and Its Applications. Lecture Notes in Operations Research, vol. 12, pp. 55-60. World Publishing Corporation, Beijing (2010)

22. Ye, Y: Interior Point Algorithms: Theory and Analysis. Wiley, New York (1997)

23. Ye, Y, Todd, MJ, Mizuno, S: An $$O(\sqrt{n}L)$$-iteration homogeneous and self-dual linear programming algorithm. Math. Oper. Res. 19, 53-67 (1994)

24. Lenstra, AK, Lenstra, HW Jr., Lovász, L: Factoring polynomials with rational coefficients. Math. Ann. 261, 515-534 (1982)

25. Havas, G, Majewski, BS, Matthews, KR: Extended GCD and Hermite normal form algorithms via lattice basis reduction. Exp. Math. 7, 125-136 (1998)

## Acknowledgements

The authors are very grateful to the editor and reviewers for their valuable comments and suggestions and would like to thank Dr. Zhengtian Wu for numerical implementation of the method. This work was partially supported by GRF: CityU 101113 of Hong Kong SAR Government.

## Author information

Authors

### Corresponding author

Correspondence to Chuangyin Dang.

### Competing interests

The authors declare that they have no competing interests.

### Authors’ contributions

Both authors contributed equally to the writing of this paper. Both authors read and approved the final manuscript.

## Appendix: Basis reduction and preconditioning

### Appendix: Basis reduction and preconditioning

A subset $$L\subset R^{n}$$ is called a lattice if there exist linearly independent vectors $$b_{1}, b_{2}, \ldots, b_{n}$$ such that $$L=\{\sum_{j=1}^{l}\alpha_{j}b_{j} \mid \alpha_{j}\mbox{ is an integer for }1\leq j\leq l\}$$. The well-known Gram-Schmidt orthogonalization is a transformation procedure that derives from the independent vectors $$b_{j}$$, $$j=1,2,\ldots,l$$, the orthogonal vectors $$b_{j}^{*}$$, $$j=1,2,\ldots,l$$, by the following procedure:

\begin{aligned}& b_{1}^{*}=b_{1}, \\& b_{j}^{*}=b_{j}-\sum_{k=1}^{j-1} \mu_{jk}b_{k}^{*},\quad 2\leq j\leq l, \\& \mu_{jk}=\frac{b_{j}^{\top}b_{k}^{*}}{b_{k}^{*\top}b_{k}^{*}},\quad 1\leq k< j\leq l. \end{aligned}

For $$y\in R^{n}$$, let $$\|y\|$$ denote the Euclidean norm of y. The following definition comes from .

### Definition 1

A basis $$b_{1}, b_{2}, \ldots, b_{l}$$ is called reduced if the following two conditions are satisfied:

Condition 1::

$$|\mu_{jk}|\leq\frac{1}{2}$$ for $$1\leq k< j\leq l$$, and

Condition 2::

$$\|b_{j}^{*}+\mu_{j,j-1}b_{j-1}^{*}\|^{2}\geq\frac{3}{4}\|b_{j-1}^{*}\|^{2}$$ for $$1< j\leq l$$.

Given this definition, Lováz’s basis reduction algorithm in  can be stated as follows:

Step 1:

(Size reduction): If, for any pair of j and k with $$1\leq k< j\leq l$$, Condition 1 is violated, then replace $$b_{j}$$ by $$b_{j}-\lceil\mu_{jk}\rfloor b_{k}$$, where $$\lceil\mu_{jk}\rfloor=\lceil\mu_{jk}-\frac{1}{2}\rceil$$.

Step 2:

(Interchange): If Condition 2 is violated for some j with $$1< j\leq l$$, then interchange $$b_{j-1}$$ and $$b_{j}$$.

Step 3:

(Repeat): Repeat the above two steps till there is no violation of either of Conditions 1 and 2.

Let $$H=\{y\in R^{m}_{+} \mid Cy=d\}$$, where $$C=(c_{ij})$$ is an $$n\times m$$ integer matrix and d is an integer point of $$R^{n}$$. Without loss of generality we assume that $$\operatorname{gcd}(c_{i1},c_{i2},\ldots,c_{im})=1$$ for all $$1\leq i\leq m$$. This assumption can be met by directly dividing the GCD (greatest common divisor) to each row of C, where the GCD can be found by an extended GCD algorithm. To convert this problem into an equivalent problem of determining whether there is an integer point in a polytope given by $$P=\{x\in R^{n} \mid Ax\leq b\}$$, we use the same procedure as in . Let

$$B=\left ( \textstyle\begin{array}{@{}c@{\quad}c@{}} I_{m} & 0\\ 0 & N_{1}\\ N_{2}C & -N_{2} d \end{array}\displaystyle \right ),$$

where $$I_{m}$$ is an $$m\times m$$ identity matrix and $$N_{1}$$ and $$N_{2}$$ are two sufficiently large positive integers (e.g., $$N_{1}=1\text{,}000$$ and $$N_{2}=10\text{,}000$$). Applying Lováz’s basis reduction algorithm to B, we obtain

$$\hat{B}=\left ( \textstyle\begin{array}{@{}c@{\quad}c@{\quad}c@{}} A & b & G\\ 0 & N_{1} & 0\\ 0 & 0 & N_{2}I_{n} \end{array}\displaystyle \right ),$$

where $$I_{n}$$ is an $$n\times n$$ identity matrix. Let $$P=\{x\in R^{n} \mid Ax\leq b\}$$, where A and b are the same as in . Then, determining whether there is an integer point in H is equivalent to determining whether there is an integer point in P.

Given any polytope $$P=\{x\in R^{n} \mid Ax\leq b\}$$, one can precondition A by applying Lováz’s basis reduction algorithm. If there are continuous variables, one can apply Gram-Schmidt orthogonalization to the corresponding matrix.

Given positive integers $$p_{i}$$, $$i=1,2,\ldots,m$$, the extended GCD with the basis reduction  can be employed to find their common greatest divisor, which is as follows.

Initialization::

Let $$m_{1}=3$$, $$n_{1}=4$$, $$U=(u_{ij})_{m\times m}=I_{m}$$, $$d_{i}=1$$, $$i=1,2,\ldots,m+1$$, $$T=(t_{ij})_{m\times m}=0_{m}$$, and $$k=2$$.

Step 1::

Let $$i=k-1$$ and perform $$\operatorname{Reduce}(k,i)$$. Let

$$r_{1}=n_{1}\bigl(d_{k-1}d_{k+1}+t_{k,k-1}^{2} \bigr)-m_{1}d_{k}^{2}.$$

If $$p_{k-1}\neq0$$ or $$p_{k-1}=0$$, $$p_{k}=0$$, and $$r_{1}<0$$, then perform $$\operatorname{Swap}(k)$$ and let $$k=k-1$$ if $$k>2$$. Otherwise, for $$i=k-2,k-3,\ldots,1$$, perform $$\operatorname{Reduce}(k,i)$$. Let $$k = k+1$$ and go to Step 2.

Step 2::

If $$k>m$$, Stop. Otherwise, go to Step 1.

Finalization::

If $$p_{m}<0$$, let $$p_{m}=-p_{m}$$ and $$u_{jm}=-u_{jm}$$, $$j=1,2,\ldots,m$$. Let $$\mathrm{GCD}=p_{m}$$ and, for $$j=1,2,\ldots,m$$, let

\begin{aligned}& h=u_{j1}, \\& u_{j1}=u_{jm}, \\& u_{jm}=h. \end{aligned}

### 1.1 $$\operatorname{Reduce}(k,i)$$

If $$p_{i}\neq0$$, let

$$r=\biggl\lceil p_{k}/p_{i}-\frac{1}{2}\biggr\rceil .$$

Otherwise, let

$$r=\left \{ \textstyle\begin{array}{l@{\quad}l} \lceil t_{ki}/d_{i+1}-\frac{1}{2}\rceil & \mbox{if }2|t_{ki}|>d_{i+1}, \\ 0 & \mbox{otherwise}. \end{array}\displaystyle \right .$$

If $$r\neq0$$, let

\begin{aligned}& p_{k}=p_{k}-rp_{i}, \\& u_{jk}=u_{jk}-ru_{ji},\quad j=1,2,\ldots,m, \\& t_{ki}=t_{ki}-rd_{i+1}, \\& t_{kj}=t_{kj}-rt_{ij},\quad j=1,2,\ldots,i-1. \end{aligned}

### 1.2 $$\operatorname{Swap}(k)$$

\begin{aligned} \begin{aligned} &h=p_{k}, \\ &p_{k}=p_{k-1}, \\ &p_{k-1}=h. \end{aligned} \end{aligned}

For $$j=1,2,\ldots,m$$,

\begin{aligned}& h=u_{jk}, \\& u_{jk}=u_{j,k-1}, \\& u_{j,k-1}=h. \end{aligned}

For $$j=1,2,\ldots,k-2$$,

\begin{aligned}& h =t_{kj}, \\& t_{kj}=t_{k-1,j}, \\& t_{k-1,j}=h. \end{aligned}

For $$j=k+1,k+2,\ldots,m$$,

\begin{aligned}& h_{0} =t_{j,k-1}t_{k,k-1}+t_{jk}d_{k-1}, \\& h_{1}=t_{j,k-1}d_{k+1}-t_{jk}t_{k,k-1}, \\& t_{j,k-1}=h_{0}/d_{k}, \\& t_{jk}=h_{1}/d_{k}, \\& d_{k}=\bigl(d_{k-1}d_{k+1}+t_{k,k-1}^{2} \bigr)/d_{k}. \end{aligned}

## Rights and permissions 