Fast Parallel Algorithms for Minimum and Related Problems with Small Integer Inputs

The fundamental problem of minimum computation has several well-studied generalizations such as prefix minima, range minima, and all nearest smaller values computations. Recent papers introduced parallel algorithms for these problems when the n input elements are given from an integer domain [1..s], obtaining O(lglglgs) running time and linear work for s ≥ n. However, most of these algorithms have the running time of O(lglglgn) (rather than O(lglglgs)) for all values of s ≤ n, except for the case of s = O(1) in which case the running time is O(α(n)). In this paper we focus on the range s ≤ n and provide linear-work algorithms whose running time O(lglglgs + f(n)) is for all s ≥ 0, where f(n) is either one of the slow growing functions lg*n or α(n). We show how to generalize our algorithms to the case that the domain size s is unknown, with the same complexities. (All previous algorithms work only under the assumption that the domain size s is known.) Moreover, we make our algorithms output-sensitive with the lglglgs term replaced by lglglgM, where M is the maximum input value. In fact, for the minimum computation problem the running time is O(lglglgm) for all s ≥ 0, where m is the minimum input value.