Implicit dictionaries supporting searches and amortized updates in O(log n log log n) time
SODA '03 Proceedings of the fourteenth annual ACM-SIAM symposium on Discrete algorithms
Proximity Mergesort: optimal in-place sorting in the cache-oblivious model
SODA '04 Proceedings of the fifteenth annual ACM-SIAM symposium on Discrete algorithms
Towards in-place geometric algorithms and data structures
SCG '04 Proceedings of the twentieth annual symposium on Computational geometry
Implicit B-trees: a new data structure for the dictionary problem
Journal of Computer and System Sciences - Special issue on FOCS 2002
Implicit dictionaries with O(1) modifications per update and fast search
SODA '06 Proceedings of the seventeenth annual ACM-SIAM symposium on Discrete algorithm
In-place 2-d nearest neighbor search
Proceedings of the nineteenth annual ACM-SIAM symposium on Discrete algorithms
Optimal cache-oblivious implicit dictionaries
ICALP'03 Proceedings of the 30th international conference on Automata, languages and programming
Hi-index | 0.00 |
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.