The Fenwick tree is a classical implicit data structure that stores an array in such a way that modifying an element, accessing an element, computing a prefix sum and performing a predecessor search on prefix sums all take logarithmic time. We introduce a number of variants which improve the classical implementation of the tree: in particular, we can reduce its size when an upper bound on the array element is known, and we can perform much faster predecessor searches. Our aim is to use our variants to implement an efficient dynamic bit vector: our structure is able to perform updates, ranking and selection in logarithmic time, with a space overhead in the order of a few percents, outperforming existing data structures with the same purpose. Along the way, we highlight the pernicious interplay between the arithmetic behind the Fenwick tree and the structure of current CPU caches, suggesting simple solutions that improve performance significantly.
Compact Fenwick trees for dynamic ranking and selection / S. Marchini, S. Vigna. - In: SOFTWARE-PRACTICE & EXPERIENCE. - ISSN 0038-0644. - 50:7(2020 Jul), pp. 1184-1202.
|Titolo:||Compact Fenwick trees for dynamic ranking and selection|
VIGNA, SEBASTIANO (Corresponding)
|Parole Chiave:||compact data structures; dynamic bit vectors; prefix sums|
|Settore Scientifico Disciplinare:||Settore INF/01 - Informatica|
|Data di pubblicazione:||lug-2020|
|Digital Object Identifier (DOI):||http://dx.doi.org/10.1002/spe.2791|
|Appare nelle tipologie:||01 - Articolo su periodico|