# Finding minimum (or maximum) element of a low rank matrix.

Let $A\in\mathbb{R}^{n\times n}$ and suppose that $A$ is of rank $m\leq n$. Moreover suppose we know $u_1,\ldots, u_m \in\mathbb{R}^{n\times 1}$ and $v_1,\ldots, v_m \in\mathbb{R}^{n\times 1}$ such that

$A = \sum_{k=1}^m u_kv_k^T$

Is there a faster way than $\mathcal{O}(n^2)$ for finding the minimum (or maximum) element of $A$? Here I'm thinking of $m$ being small in comparison to $n$.

For instance, if $m=1$ it is easy to find the minimum (or maximum) element just by finding the minimum of $u_1$ and then of $v_1$, taking $\mathcal{O}(n)$.

For instance, if $m=1$ then to compute the maximum you can do,

$\max\{\min u_1\cdot \min v_1,\min u_1\cdot\max v_1, \max u_1\cdot\min v_1,\max u_1\cdot\max v_1\}$

which is $\mathcal{O}(n)$.

Thanks.

• The problem for $m=1$ is not as easy as you said. For example, let -30 and -40 the mininum values at entries $i$ and $j$ of $u$ and $v$ respectively . 1200 does not seem to be the minimum value (take for example one entry equal to zero). Moreover, you should define what you mean by complexity (mean, worst-case,...). Sep 22, 2011 at 12:50
• Ideally, worst-case but mean-case is fine. Sep 22, 2011 at 12:56
• "mean-case" may actually be trickier since it could depend on the distribution that the rank-$m$ matrix is drawn from. Jan 12, 2012 at 16:08

Here's a geometrical reformulation of the problem that yields an $O(n \log n)$ solution for $m=2$ and suggests a context that may yield good answers for arbitrary fixed $m$. [EDIT but see below for $m=3$ and $m \geq 4$.]

Denote the $i$-th coordinate of $u_k^{\phantom.}$ and $v_k^{\phantom.}$ by $u_k^{(i)}$ and $v_k^{(i)}$ respectively. Consider the $n$ vectors in $V := {\bf R}^m$ given by $$x_i = (u_1^{(i)}, u_2^{(i)}, u_3^{(i)}, \ldots, u_n^{(i)})$$ ($i=1,2,\ldots,n$), and the $n$ dual vectors $$y_j = (v_1^{(j)}, v_2^{(j)}, v_3^{(j)}, \ldots, v_n^{(j)}) \in V^*.$$ ($j=1,2,\ldots,n$). Then the $(i,j)$ entry of $A$ is $y_j(x_i)$. Thus the problem asks for the minimum or maximum of $y_j(x_i)$ as $i,j$ range independently over $\lbrace 1, 2, \dots, n \rbrace$.

Note that given $A$ there are many choices of $u_k$ and $v_k$, but the choice is tantamount to a choice of basis on $V$ and of dual basis on $V^*$, so geometrically our $y_j(x_i)$ problem depends only on $A$.

Now it's clear that the minimizing and maximizing $x_i, y_j$ must be vertices of the convex hull of $\lbrace x_i \rbrace$ and $\lbrace y_j \rbrace$ respectively. This recovers the known solution for $m=1$, when any bounded convex subset of $V$ has (at most) two vertices, which can be found in $O(n)$ comparisons.

For $m=2$, it is still known how to find the vertices of the convex hull (in cyclic order) in $O(n \log n)$ steps [see for instance the "Convex hull algorithms" Wikipage for references]. Once we know the vertices of the convex hull of the $x_i$, we can for each $j$ find the minimal and maximal $y_j(x_i)$ in $O(\log n)$ steps by bisection, making the overall computational cost still $O(n \log n)$.

Finding the convex hull and its structure for $m=3$, and larger fixed $m$, is harder, but at least there's some literature on this problem, and experts who can suggest good ways to proceed.

EDIT Alas the current state of the art for computing convex hulls apparently limits this approach to $m=2$ and maybe $m=3$.

The Mathworld entry for "Convex Hull" reports on an $O(n \log n)$ algorithm also in dimension 3, referring to

Skiena, S. S. "Convex Hull." $\S$8.6.2 in The Algorithm Design Manual. New York: Springer-Verlag, pp. 351–354, 1997.

But this still leaves open the question of computing in time $\tilde O(n)$ a data structure that will find the extreme point in each direction in only $n^{o(1)}$ operations, or even in significantly less than the number of vertices of the convex hull. Still, if at least one of $\lbrace x_i \rbrace$ and $\lbrace y_j \rbrace$ has a convex hull with significantly fewer than $n$ vertices then this will improve on the exhaustive search over $n^2$ entries of the matrix.

Once $m \geq 4$ it seems that it is not even known how to compute the set of vertices of the convex hull in as few as $n^2$ operations; unless the number of operations can be brought significantly below $n^2$, this means that the technique described here is limited to $m=2$ and maybe $m=3$. TIDE

All of this analysis assumes that we don't run into difficulties like $m=1$, $u_1 = (-1,2.54)$, $v_1 = (1,-.3937)$, where there are two or more very close candidates for the minimum. To deal with that, we might assume that we can do exact arithmetic (perhaps the coordinates are quantized with fixed denominator), or tolerate an error that can be brought below $\epsilon$ in $O(\log(1/\epsilon))$ steps.

We can reformulate the problem as follows: given vectors $u_1,\ldots,u_n,v_1,\ldots,v_n \in \mathbb{R}^m$, find $\max | \langle u_i,v_j \rangle |$ over all $i,j \in [n]$.

Now, if an approximate answer is good enough, I think that for small $m$ an approximate answer with multiplicative error of $1+\epsilon$ can be found in time $\approx n m + (1/\epsilon)^m$. Take an $\epsilon$-net of the $m$-dimensional sphere (that is, a set of points on the sphere such that each other point on the sphere is $\epsilon$-close to one of them). Such a net has size $(1/\epsilon)^{O(m)}$. Now, hash the vectors $u_1,\ldots,u_n$ to the sphere. Let $u'_i=u_i / \|u_i\|$ be the image of $u_i$. Find the point on the net closest to $u'_i$ (trivially this can be done in time linear in the size of the net, but probably there are some geometric algorithms to do this is constant or near constant time). For each point in the net store the vector close to it with maximal norm. Do the same for $v_1,\ldots,v_n$. To finish, go over all pairs of points in the net and compute the inner products of their associated vectors.

• Interesting idea, but there's no canonical inner product, and the method could fail to get within the desired error if the chosen inner product puts all the $u_i$ near a proper subspace and all the $v_j$ are near its orthogonal complement. Jan 19, 2012 at 3:30