Cache-Oblivious Representation of B-Tree Structures
We present a data structure CORoBTS for storing a search tree with all leaves at the same depth and vertices of arity between chosen constants a and b in a cache-oblivious way. It provides operations for inserting an a-ary subtree and removing a subtree; both have an amortized I/O complexity 𝒪(S·(log^2 N)/ B + log_B N ·loglog S + 1) and amortized time complexity 𝒪(S·log^2 N), where S is the size of the subtree and N size of the whole stored tree. The tree allows searching with an optimal I/O complexity 𝒪(log_BN) and is stored in a linear space. We use the data structure as a top space-time tree in the cache-oblivious partially persistent array proposed by Davoodi et al. [DFIÖ14]. The space complexity of the persistent array is then improved from 𝒪(U^log_2 3 + V log U) to 𝒪(U + V log U), where U is the maximal size of the array and V is the number of versions. The data locality and I/O complexity of both present and persistent reads are kept unchanged; I/O complexity of writes is worsened by a polylogarithmic factor.
READ FULL TEXT