中文

多独立插入序列的最大线性与循环和的线性时间计算

数据结构与算法 2017-01-09 v3

摘要

序列 AA(包含 nn 个实数)的最大和是指 AA 的任意严格连续且可能为空的子序列的所有元素之和的最大值,可通过 Kadane 算法在 O(n)O(n) 时间内计算。令 A(xp)A^{(x \to p)} 表示在元素 A[p1]A[p-1]A[p]A[p] 之间插入实数 xx 后得到的序列,我们展示了如何在已对 AA 执行 O(n)O(n) 时间预处理的前提下,以 O(1)O(1) 的最坏情况时间计算任意给定 xxpp 对应的 A(xp)A^{(x \to p)} 的最大和。特别是,这意味着给定 mm(x0,p0),...,(xm1,pm1)(x_0, p_0), ..., (x_{m-1}, p_{m-1}),我们可以在 O(n+m)O(n+m) 时间内计算序列 A(x0p0),...,A(xm1pm1)A^{(x_0 \to p_0)}, ..., A^{(x_{m-1} \to p_{m-1})} 的最大和,这与问题输入规模所决定的下界相匹配,同时也优于对每个序列 A(xipi)A^{(x_i \to p_i)} 直接应用 Kadane 算法的朴素策略(后者总耗时为 Θ(nm)\Theta(n \cdot m))。然而,我们的主要贡献在于,针对更复杂的问题——即计算 A(xp)A^{(x \to p)} 的任意严格连续或循环连续且可能为空的子序列的所有元素之和的最大值——获得了相同的时间复杂度界限。我们的算法易于在实际中实现,其灵感来源于并在无线网状网络的缓冲区最小化问题中找到了应用。

关键词

引用

@article{arxiv.1307.1447,
  title  = {Linear Time Computation of the Maximal Linear and Circular Sums of Multiple Independent Insertions into a Sequence},
  author = {Ricardo C. Corrêa and Pablo M. S. Farias},
  journal= {arXiv preprint arXiv:1307.1447},
  year   = {2017}
}

备注

13 pages, 4 figures, 2 tables. Accepted for journal publication