We revisit the problem of maintaining the longest increasing subsequence (LIS) of an array under (i) inserting an element, and (ii) deleting an element of an array. In a recent breakthrough, Mitzenmacher and Seddighin [STOC 2020] designed an algorithm that maintains an $\mathcal{O}((1/\epsilon)^{\mathcal{O}(1/\epsilon)})$-approximation of LIS under both operations with worst-case update time $\mathcal{\tilde O}(n^{\epsilon})$, for any constant $\epsilon>0$. We exponentially improve on their result by designing an algorithm that maintains an $(1+\epsilon)$-approximation of LIS under both operations with worst-case update time $\mathcal{\tilde O}(\epsilon^{-5})$. Instead of working with the grid packing technique introduced by Mitzenmacher and Seddighin, we take a different approach building on a new tool that might be of independent interest: LIS sparsification. A particularly interesting consequence of our result is an improved solution for the so-called Erd\H{o}s-Szekeres partitioning, in which we seek a partition of a given permutation of $\{1,2,\ldots,n\}$ into $\mathcal{O}(\sqrt{n})$ monotone subsequences. This problem has been repeatedly stated as one of the natural examples in which we see a large gap between the decision-tree complexity and algorithmic complexity. The result of Mitzenmacher and Seddighin implies an $\mathcal{O}(n^{1+\epsilon})$ time solution for this problem, for any $\epsilon>0$. Our algorithm (in fact, its simpler decremental version) further improves this to $\mathcal{\tilde O}(n)$.
翻译:我们重新审视了在以下两种操作下保持一个阵列中最长增加的子序列(LIS)的问题:(一) 插入一个元素, (二) 删除一个阵列的元素。 在最近的突破中, Mitzenmacher 和 Seddiphin [STOC 设计了一个算法, 该算法维持一个$( mathcal) {O} (1/\ epsilon)\\ mathcal{ O} (1/\\ malth} (LIS) $(LIS) 在两个操作中, 以最坏的更新时间 $( mathcal) 来保持一个最小的子序列( max) 。 (cepslllon) 和 Seddighin 使用最坏的电网格包装技术, 我们用不同的方法构建了一个新工具, 这个工具可能会成为独立的 liaral2, 并且是一个有趣的结果。