The list-labeling problem captures the basic task of storing a dynamically changing set of up to $n$ elements in sorted order in an array of size $m = (1 + \Theta(1))n$. The goal is to support insertions and deletions while moving around elements within the array as little as possible. Until recently, the best known upper bound stood at $O(\log^2 n)$ amortized cost. This bound, which was first established in 1981, was finally improved two years ago, when a randomized $O(\log^{3/2} n)$ expected-cost algorithm was discovered. The best randomized lower bound for this problem remains $\Omega(\log n)$, and closing this gap is considered to be a major open problem in data structures. In this paper, we present the See-Saw Algorithm, a randomized list-labeling solution that achieves a nearly optimal bound of $O(\log n \operatorname{polyloglog} n)$ amortized expected cost. This bound is achieved despite at least three lower bounds showing that this type of result is impossible for large classes of solutions.
翻译:列表标记问题描述了在一个大小为 $m = (1 + \Theta(1))n$ 的数组中,以排序顺序存储一个动态变化的、最多包含 $n$ 个元素集合的基本任务。其目标是在支持插入和删除操作的同时,尽可能少地移动数组中的元素。直到最近,已知的最优上界仍是 $O(\log^2 n)$ 的平摊代价。这个于1981年首次建立的上界,在两年前终于被突破,当时发现了一种随机化 $O(\log^{3/2} n)$ 期望代价的算法。该问题已知的最优随机化下界仍然是 $\Omega(\log n)$,缩小这一差距被认为是数据结构领域的一个重大开放问题。在本文中,我们提出了跷跷板算法(See-Saw Algorithm),这是一种随机化列表标记解决方案,实现了近乎最优的 $O(\log n \operatorname{polyloglog} n)$ 平摊期望代价。尽管至少存在三个下界证明此类结果对于一大类解决方案是不可能的,但我们仍然取得了这一成就。