Exact algorithms for non-convex quadratic programming This question is about quadratic programming problems with box constraints (box-QP), i.e., optimisation problems of the form


minimise $f(\mathbf{x}) = \mathbf{x}^T A \mathbf{x} + \mathbf{c}^T \mathbf{x}$ subject to $\mathbf{x} \in [0,1]^n$.


If $A$ was positive semi-definite, then everything would be nice and convex and easy, and we could solve the problem in polynomial time.

On the other hand, if we had the integrality constraint $\mathbf{x} \in \{0,1\}^n$, we could easily solve the problem in time $O(2^n \cdot \mathrm{poly}(n))$ by brute force. For the purposes of this question, this is reasonably fast.

But what about the non-convex continuous case? What is the fastest known algorithm for general box-QPs?

For example, can we solve these in moderately exponential time, e.g., $O(3^n \cdot \mathrm{poly}(n))$, or is the worst-case complexity of the best known algorithms something much worse?



Background: I have some fairly small box-QPs that I would actually like to solve, and I was a bit surprised to see how poorly some commercial software packages perform, even for very small values of $n$. I started to wonder if there is a TCS explanation for this observation.
An optimal solution lies on some face.  So, we can go through all the faces of the cube, and find all stationary points on each of the faces.

Here is a more concrete procedure.  A face of the cube can be characterized by two disjoint index sets $I_0$ and $I_1$.  For $i \in I_0$, we fix $x_i = 0$, and for $i \in I_1$ we fix $x_i = 1$.  Let $\tilde{x}$ consist of the remaining unfixed entries of $x$.  This fixing turns the objective function into the following form:

$$
\tilde{x}^{\top} \tilde{A} \tilde{x} + \tilde{c}^{\top} \tilde{x} + d,
$$

with appropriate $\tilde{A}$ and $\tilde{c}$, and some constant $d$, and we want to find the stationary points of this function under the condition that $0 &lt; \tilde{x} &lt; 1$.

To this end, we take the differentiation of the objective function to obtain

$$
\frac{1}{2} \tilde{A} \tilde{x} + \tilde{c} = 0.
$$

Solving this system of linear equations gives you the stationary points, the candidates for optimal solutions.  We go through all of them, check the condition, and choose one with the minimum objective value.

The overall time complexity is something like $O(3^n \text{poly}(n))$ since the number of faces of the $n$-cube is $3^n$ and a system of linear equations can be solved in polynomial time.  The space complexity is polynomial in $n$.