July 14th, 2024

Compact Fenwick trees for dynamic ranking and selection (2019)

The paper presents Compact Fenwick trees, enhancing array storage and operations efficiency. It introduces optimized variants for faster searches and reduced space usage, aiming to create a dynamic bit vector with logarithmic time complexity. Additionally, it proposes solutions to leverage CPU cache structures for enhanced performance.

Read original articleLink Icon
Compact Fenwick trees for dynamic ranking and selection (2019)

The paper discusses Compact Fenwick trees, a data structure that efficiently stores arrays and supports operations like modifying elements, accessing elements, computing prefix sums, and predecessor searches in logarithmic time. The authors introduce variants that improve the classical implementation by reducing size when an upper bound on array elements is known and enabling faster predecessor searches. They aim to use these variants to create an efficient dynamic bit vector that can perform updates, ranking, and selection in logarithmic time with minimal space overhead. The study also addresses the interaction between the arithmetic of Fenwick trees and CPU cache structures, proposing solutions to enhance performance. The work outperforms existing data structures with similar functionalities, offering a compact solution with improved efficiency.

Link Icon 3 comments
By @mihaic - 3 months
I just want to add that succinct data structures are reasonably straightforward to develop when there's an actual requirement, so I would have wanted to see some better benchmarking numbers here.

I had pretty much this same task as the second hardest challenge in a 2-hour competitive programming contest, and plenty of people came up with the solution on the spot. Try an implementation yourself if you're up for it here: https://csacademy.com/contest/archive/task/light-count/

By @froh - 3 months
> 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,

large bit vectors as in 10^6..10^10 bit bit veczors

By @wslh - 3 months