An implicit data structure for the dictionary problem maintains n data 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(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 O(log(B) 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(log(2) n/log log n), disproving a conjecture of the mid 1980s. (C) 2003 Elsevier Inc. All rights reserved.

Implicit B-trees: A New Data Structure for the Dictionary Problem

GROSSI, ROBERTO;PAGLI, LINDA
2004-01-01

Abstract

An implicit data structure for the dictionary problem maintains n data 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(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 O(log(B) 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(log(2) n/log log n), disproving a conjecture of the mid 1980s. (C) 2003 Elsevier Inc. All rights reserved.
2004
Franceschini, G.; Grossi, Roberto; Munro, J. I.; Pagli, Linda
File in questo prodotto:
Non ci sono file associati a questo prodotto.

I documenti in IRIS sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/11568/184996
 Attenzione

Attenzione! I dati visualizzati non sono stati sottoposti a validazione da parte dell'ateneo

Citazioni
  • ???jsp.display-item.citation.pmc??? ND
  • Scopus 7
  • ???jsp.display-item.citation.isi??? 4
social impact