中文

快速且最长的过山车序列

数据结构与算法 2019-08-08 v2

摘要

对于 k3k\geq 3,k-过山车序列是指其每个极大连续递增或递减子序列长度至少为 kk 的数序列;33-过山车序列简称为过山车序列。给定一 distinct 数序列,我们关注计算其最大长度(不必连续)的 kk-过山车子序列。Biedl 等人 [ICALP 2018] 已证明每个含 nn 个 distinct 实数的序列在 n>7n>7 时包含长度至少为 n/2\lceil n/2\rceil 的过山车序列,且此类序列中最长过山车可在 O(nlogn)O(n\log n) 时间内算出。他们还证明每个含 n(k1)2+1n\geq (k-1)^2+1 个 distinct 实数的序列包含长度至少为 n2(k1)3k2\frac{n}{2(k-1)}-\frac{3k}{2}kk-过山车序列,并给出了在长度为 nn 的序列中计算最长 kk-过山车的 O(nklogn)O(nk\log n) 时间算法。本文中,我们给出一种 O(nk2)O(nk^2) 时间算法,计算含 nn 个 distinct 实数的序列中最长 kk-过山车的长度;因此,对于常数 kk,我们的算法在最优线性时间内计算最长 kk-过山车的长度。该算法可轻易调整以输出相应 kk-过山车。特别地,这改进了 Biedl 等人 [ICALP 2018] 的结果,表明最长过山车可在最优线性时间内算出。我们还提出一种在 O(nlog2n)O(n \log^2 n) 时间内计算最长 kk-过山车长度的算法,即对于大至 knk\leq nkk 也是亚二次的。同样,过山车可轻易重构。最后,我们给出任何基于比较的计算最长 kk-过山车长度的算法在比较次数上的 Ω(nlogk)\Omega(n \log k) 下界。

关键词

引用

@article{arxiv.1810.07422,
  title  = {Fast and Longest Rollercoasters},
  author = {Paweł Gawrychowski and Florin Manea and Radosław Serafin},
  journal= {arXiv preprint arXiv:1810.07422},
  year   = {2019}
}