Implicit B-Trees: New Results for the Dictionary Problem

  • Authors:
  • Gianni Franceschini;Roberto Grossi;J. Ian Munro;Linda Pagli

  • Affiliations:
  • -;-;-;-

  • Venue:
  • FOCS '02 Proceedings of the 43rd Symposium on Foundations of Computer Science
  • Year:
  • 2002

Quantified Score

Hi-index 0.00

Visualization

Abstract

We reopen the issue of finding an implicit data structure for the dictionary problem. In particular, we examine the problem of maintaining n data values in the first n locations of an array in such a way that we can efficiently perform the operations insert, delete and search. No information other than n and the data is to be retained; and the only operations which we may perform on the data values (other than reads and writes) are comparisons. Our structure supports these operations in 0(\log ^2 n/\log \log n) time, marking the first improvement on the problem since the mid 1980's. En route we develop a number of space efficient techniques for handling segments of a large array in a memory hierarchy. We achieve a cost of 0(\log _B n) block transfers like in regular B-trees, under the realistic assumption that a block stores B = \Omega (\log n) keys, so that reporting r consecutive keys in sorted order has a cost of 0(\log _B n + {r \mathord{\left/ {\vphantom {r B}} \right. \kern-\nulldelimiterspace} B}) block transfers. Being implicit, our B-tree occupies exactly \left\lceil {{\raise0.7ex\hbox{$n$} \!\mathord{\left/ {\vphantom n B}}\right.\kern-\nulldelimiterspace} \!\lower0.7ex\hbox{$B$}}} \right\rceilblocks after each update.