Finding all nearest smaller values on a distributed memory machine

Jyrki Katajainen
Department of Computer Science, University of Copenhagen, Universitetsparken 1, DK-2100 Copenhagen East, Denmark


Let $A = [a_j]_{j=1}^{n}$ be a sequence of $n$ elements drawn from some totally ordered set. In the all nearest smaller values problem the task is to find for each $a_j, j \in \{1,2,\ldots,n\}$, the elements $a_i$ and $a_k$ such that $i=\max\{h\in \{1,\ldots,j\} \mid a_h < a_j\}$ and $k=\min\{h\in \{j,\ldots,n\} \mid$ $a_h < a_j\}$, if such elements exist. In this paper it is shown that this problem can be solved in $O(n/q)$ time and $O(n)$ space with $q$ processors on a distributed memory machine, provided that $q \in \{1,2,\ldots,O(n/\log_2 n)\}$. More precisely, the machine considered consists of $q$ processors and $q$ memory modules connected by a communication network, which allows every processor to access any memory module in constant time if only every memory module is accessed by at most one processor at a time. The result proved complements the earlier known results showing that, on a CREW PRAM, $\Omega(\log_2 n)$ is a lower bound for the time complexity of the problem with any number of processors and that, on a hypercube, any $O(\log_2 n)$ algorithm must use $\Omega(n)$ processors.
Conference Home Page