Predecessor queries in constant time?

  • Authors:
  • Marek Karpinski;Yakov Nekrich

  • Affiliations:
  • Dept. of Computer Science, University of Bonn;Dept. of Computer Science, University of Bonn

  • Venue:
  • ESA'05 Proceedings of the 13th annual European conference on Algorithms
  • Year:
  • 2005

Quantified Score

Hi-index 0.00

Visualization

Abstract

In this paper we design a new static data structure for batched predecessor queries. In particular, our data structure supports $O(\sqrt{{\rm log}n})$ queries in O(1) time per query and requires $O(n^{\epsilon\sqrt{{\rm log}n}})$ space for any ε 0. This is the first o(N) space and O(1) amortized time data structure for arbitrary $N = \Omega(n^{\epsilon\sqrt{{\rm log}n}})$ where N is the size of the universe. We also present a data structure that answers O(log log N) predecessor queries in O(1) time per query and requires $O(n^{\epsilon{\rm log log} {\it N}})$ space for any ε 0. The method of solution relies on a certain way of searching for predecessors of all elements of the query in parallel. In a general case, our approach leads to a data structure that supports p(n) queries in $O(\sqrt{{\rm log} n}/p(n))$ time per query and requires O(n$^{p({\it n})}$) space for any $p(n) =O(\sqrt{{\rm log}n})$, and a data structure that supports p(N) queries in O(log log N/p(N)) time per query and requires O(n$^{p({\it N})}$) space for any p(N)=O(log log N).