Skip to content

定义Definition

前缀和

施工中 · 内容逐步修订

Prefix sum · Cumulative sum

预先累计序列前缀,使静态区间和查询可由两个前缀值相减得到。

形式陈述 ​

给定有限序列 a1,…,an,以及幺半群 (M,∘,e),定义左前缀聚合

P0=e,Pi=Pi−1∘ai=a1∘⋯∘ai.

用数组保存结果,顺序扫描可在 O(n) 次幺半群运算内构建全部 Pi,之后每个前缀查询直接读取 Pr。空序列仍有单位元前缀 P0=e。这些是代数运算与槽访问的次数;要进一步称为相应时间界,需假定元素表示、复制与每次运算都为常数成本。这里只需要结合律与空前缀单位元,不需要交换律或逆元。

若 (M,∘,e) 进一步是群,则闭区间 al∘⋯∘ar 可由

Pl−1−1∘Pr

在 O(1) 次群运算内恢复,因为 Pr=Pl−1∘(al∘⋯∘ar)。非交换群中逆元必须放在左侧;写成 Pr∘Pl−1−1 一般错误。普通数值前缀和位于加法阿贝尔群中,公式退化为 Pr−Pl−1。

直觉

前缀数组把一条长依赖链的所有中间累计值预先保存。查询前缀时直接读取;查询内部区间时,用逆元撤销左侧已经累计的部分。结合律允许改变括号,却不允许交换元素次序;逆元负责消去,交换律只在常见加法实例中额外成立。

这种预处理适合静态数据。修改 aj 会影响所有 Pi(i≥j),直接维护需要线性时间;动态版本必须换成树状或分层摘要。

闭区间与两个前缀边界
例子与边界

数组 [2,1,4,3] 的加法前缀为 [0,2,3,7,10],区间 [2,4] 的和是 10−2=8。异或构成阿贝尔群,也可用同一边界消去;字符串拼接的自由幺半群没有全局逆元,但已知一个字符串确为另一个的前缀时,可唯一删去该前缀,得到剩余子串。这是有条件的左消去,并非群中的任意相除;返回共享切片与复制实际字符也有不同成本。一般幺半群则连这种消去都未必存在,例如最小值聚合会丢失此前较大的元素。

浮点加法在机器算术下不满足精确结合律。顺序前缀、树形 scan 和不同并行归约可能产生不同舍入结果;复杂度公式不因此失效,但数学等价与数值可复现性应分别说明,误差分析见浮点求和。

二维前缀和利用包含—排除由四个角值求矩形和;这需要交换加法群。对非交换操作,没有不声明顺序约定的直接二维推广。

推论与应用

并行前缀扫描在任意幺半群上以 Θ(n) 工作、O(log⁡n) 深度计算全部前缀。Fenwick 树则在标准阿贝尔群更新模型下支持动态点增量和前缀查询。两者实现的是不同更新/并行接口,不能只因都输出前缀就互换复杂度。

在有限序列的阿贝尔群范围内,差分数组与前缀和互为变换:差分取相邻值之差,前缀累积恢复原序列。这份互逆对应限定在上述阿贝尔群范围内;一般幺半群前缀没有逆元,因而没有对应的无条件差分变换。

前缀计数、积分图、离线频率和扫描线事件都沿用相同边界思想。更高维、动态或输出敏感查询需要额外索引结构,不能从一维静态 O(1) 区间和直接外推。

参考资料
  • Thomas H. Cormen et al., Introduction to Algorithms, 4th ed., MIT Press, 2022, prefix computations and range sums.
  • Guy E. Blelloch, “Prefix Sums and Their Applications,” in Synthesis of Parallel Algorithms, Morgan Kaufmann, 1990.
  • Donald E. Knuth, The Art of Computer Programming, Vol. 1, 3rd ed., Addison-Wesley, 1997, cumulative sums and finite differences.
关系图谱13 个相邻概念 · 4 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系