Cache oblivious search trees via binary trees of small height

We propose a version of cache oblivious search trees which is simpler than the previous proposal of Bender, Demaine and Farach-Colton and has the same complexity bounds. In particular, our data structure avoids the use of weight balanced <i>B</i>-trees, and can be implemented as just a single array of data elements, without the use of pointers. The structure also improves space utilization.For storing <i>n</i> elements, our proposal uses (1 + ε)<i>n</i> times the element size of memory, and performs searches in worst case <i>O</i>(log<inf><i>B</i></inf> <i>n</i>) memory transfers, updates in amortized <i>O</i>((log<sup>2</sup> <i>n</i>)/(ε<i>B</i>)) memory transfers, and range queries in worst case <i>O</i>(log<inf><i>B</i></inf> <i>n + k/B</i>) memory transfers, where <i>k</i> is the size of the output.The basic idea of our data structure is to maintain a dynamic binary tree of height log <i>n+O</i>(1) using existing methods, embed this tree in a static binary tree, which in turn is embedded in an array in a cache oblivious fashion, using the van Emde Boas layout of Prokop.We also investigate the practicality of cache obliviousness in the area of search trees, by providing an empirical comparison of different methods for laying out a search tree in memory.

[1]  Rudolf Bayer,et al.  Organization and maintenance of large ordered indexes , 1972, Acta Informatica.

[2]  Alon Itai,et al.  A Sparse Table Implementation of Priority Queues , 1981, ICALP.

[3]  Rasmus Pagh,et al.  Lossy Dictionaries , 2001, ESA.

[4]  J. Ian Munro,et al.  An Implicit Binomial Queue with Constant Insertion Time , 1988, SWAT.

[5]  Rasmus Pagh,et al.  Fast Random Access to Wavelet Compressed Volumetric Data Using Hashing , 2001 .

[6]  Michael A. Bender,et al.  Cache-oblivious B-trees , 2000, Proceedings 41st Annual Symposium on Foundations of Computer Science.

[7]  Rolf Fagerberg The Complexity of Rebalancing a Binary Search Tree , 1999, FSTTCS.

[8]  J. IAN MUNRO,et al.  An Implicit Data Structure Supporting Insertion, Deletion, and Search in O(log² n) Time , 1986, J. Comput. Syst. Sci..

[9]  Richard Cole,et al.  Optimised Predecessor Data Structures for Internal Memory , 2001, WAE.

[10]  Paul F. Dietz,et al.  Lower Bounds for Monotonic List Labeling , 1990, SWAT.

[11]  Mithuna Thottethodi,et al.  Nonlinear array layouts for hierarchical memory systems , 1999, ICS '99.

[12]  Kurt Mehlhorn,et al.  The LEDA Platform of Combinatorial and Geometric Computing , 1997, ICALP.

[13]  David A. Patterson,et al.  Computer Architecture: A Quantitative Approach , 1969 .

[14]  Richard E. Ladner,et al.  The influence of caches on the performance of heaps , 1996, JEAL.

[15]  Peter van Emde Boas,et al.  Preserving Order in a Forest in Less Than Logarithmic Time and Linear Space , 1977, Inf. Process. Lett..

[16]  Mayer Goldberg,et al.  A General Schema for Constructing One-Point Bases in the Lambda Calculus , 2001 .

[17]  Jing Wu,et al.  A locality-preserving cache-oblivious dynamic dictionary , 2002, SODA '02.

[18]  Charles E. Leiserson,et al.  Cache-Oblivious Algorithms , 2003, CIAC.

[19]  Arne Andersson,et al.  Fast Updating of Well-Balanced Trees , 1990, SWAT.

[20]  Jeffrey Scott Vitter,et al.  Optimal dynamic interval management in external memory , 1996, Proceedings of 37th Conference on Foundations of Computer Science.

[21]  Alok Aggarwal,et al.  The input/output complexity of sorting and related problems , 1988, CACM.

[22]  Douglas W. Jones,et al.  An empirical comparison of priority-queue and event-set implementations , 1986, CACM.

[23]  Amos Fiat,et al.  An Implicit Data Structure for Searching a Multikey Table in Logarithmic Time , 1991, J. Comput. Syst. Sci..

[24]  Kurt Mehlhorn,et al.  LEDA: a platform for combinatorial and geometric computing , 1997, CACM.

[25]  Rasmus Pagh,et al.  Cuckoo Hashing , 2001, Encyclopedia of Algorithms.