Self-adjusting data structures are a classic approach to adapting the complexity of operations to the data access distribution. While several self-adjusting variants are known for both binary search trees and B-Trees, existing constructions come with limitations. For instance, existing works on self-adjusting B-Trees do not provide static-optimality and tend to be complex and inefficient to implement in practice. In this paper, we provide a new approach to build efficient self-adjusting search trees based on state-of-the-art non-adaptive structures. We illustrate our approach to obtain a new efficient self-adjusting Interpolation Search Tree (IST) and B-Tree, as well as a new self-adjusting tree called the Log Tree. Of note, our self-adjusting IST has expected complexity in $O(\log \frac{\log m}{\log ac(x)})$, where $m$ is the total number of requests and $ac(x)$ is the number of requests to key $x$. Our technique leads to simple constructions with a reduced number of pointer manipulations: this improves cache efficiency and even allows an efficient concurrent implementation.
翻译:自调节数据结构是一种经典方法,用于根据数据访问分布调整操作的复杂度。尽管目前已针对二叉搜索树和B树提出了若干自调节变体,但现有构造仍存在局限性。例如,现有的自调节B树相关工作未能实现静态最优性,且在实际实现中往往复杂且低效。本文提出了一种新方法,基于最先进的非自适应结构来构建高效的自调节搜索树。我们通过该方法构建了高效的自调节插值搜索树(IST)和B树,以及一种名为对数树的新型自调节树。值得注意的是,我们构建的自调节IST的期望复杂度为$O(\log \frac{\log m}{\log ac(x)})$,其中$m$是总请求数,$ac(x)$是访问键$x$的请求数。我们的技术通过减少指针操作次数实现了简单构造:这既提高了缓存效率,还允许高效的并发实现。