Implicit B-trees: a new data structure for the dictionary problem

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

  • Affiliations:
  • Departimento di Informatica, Università di Pisa, via Buonarroti 2, Pisa 56127, Italy;Departimento di Informatica, Università di Pisa, via Buonarroti 2, Pisa 56127, Italy;Department of Computer Science, University of Waterloo;Departimento di Informatica, Università di Pisa, via Buonarroti 2, Pisa 56127, Italy

  • Venue:
  • Journal of Computer and System Sciences - Special issue on FOCS 2002
  • Year:
  • 2004

Quantified Score

Hi-index 0.00

Visualization

Abstract

An implicit data structure for the dictionary problem maintains n delta values in the first n locations of an array in such a way that it efficiently supports the operations insert, delete and search. No information other than that in O(1) memory cells and in the input data is to be retained; and the only operations performed on the data values (other than reads and writes) are comparisons. This paper describes the implicit B-tree, a new data structure supporting these operations in O(logBn) block transfers like in regular B-trees, under the realistic assumption that a block stores B = Ω(log n) keys, so that reporting r consecutive keys in sorted order has a cost of O(logB n + r/B) block transfers. En route a number of space efficient techniques for handling segments of a large array in a memory hierarchy are developed. Being implicit, the proposed data structure occupies exactly |n/B| blocks of memory after each update, where n is the number of keys after each update and B is the number of keys contained in a memory block. In main memory, the time complexity of the operations is O(log2 n/log log n), disproving a conjecture of the mid 1980s.