Skip to content

方法Method

摊还分析

Amortized analysis

对操作序列的总成本作上界,而非逐次最坏成本。

形式陈述 ​

摊还分析对每一个合法操作序列 σ=(o1,…,on) 的实际总成本给出确定性上界。若为各步指定摊还成本 c^i(σ),典型保证是

∀σ,∑i=1nci(σ)≤∑i=1nc^i(σ)+K,

这里先固定允许的初态,例如空结构。K 必须对从该初态出发的全部合法序列统一,不依赖序列长度或具体内容。若初态也是输入,就应显式写成初态规模或初始势的费用,不能仍把它隐藏为统一常数。这一确定性保证不假设操作分布,也不对随机性取期望。聚合法直接估计总成本,记账法让便宜操作预付信用,势能法则为数据结构状态 Di 选取势函数 Φ,定义

c^i=ci+Φ(Di)−Φ(Di−1),

对 i 求和后中间项相消,得

∑i=1nci=∑i=1nc^i−Φ(Dn)+Φ(D0).

初态不统一或不是空结构时,Φ(D0)−Φ(Dn) 必须保留。若已证明 Φ(Dn)≥Φ(D0),该项非正;更一般地,只有存在统一常数 K 使

supσ(Φ(D0)−Φ(Dn))≤K

时,才能把差额吸收进总成本上界。对每条序列事后选择不同的 K 不构成摊还保证。

直觉

许多数据结构的操作成本高度不均:绝大多数操作便宜,偶尔一次重组极贵。逐次最坏界仍是合法上界,却可能过松,因为每次最坏状态无法连续发生。例如扩容一次后数组留下大量空位,下一次昂贵扩容必须等待许多追加。摊还分析利用的正是操作之间的这种约束。

记账法让便宜操作预付信用,势能法把尚可支付的工作量写成当前状态的函数。两者都必须保证不能透支:否则任意昂贵操作都能靠任意负余额伪装成便宜操作。信用与势只是证明中的量,实现无须真的维护一笔钱。整个论证对每一个合法序列成立,包括对抗性序列,不需要假定哪些操作更可能出现。

势能法的数值守恒
例子与边界

考虑容量满时翻倍的动态数组。从容量 1 开始连续追加 n 个元素,新元素本身共写入 n 次,当 n≥2 时,各次扩容搬迁的元素数恰为

1+2+4+⋯+2⌊log2⁡(n−1)⌋<2n.

例如追加到第 5 个元素时,搬迁发生在第 2、3、5 次追加,分别搬 1、2、4 个元素;加上五次新写入,总成本为 12。n=1 时没有搬迁。因而任意这样的前缀总成本小于 3n,尽管某次追加可能单独搬迁 Θ(n) 个元素,每次追加的摊还成本仍为 O(1)。这里把搬迁一个元素与写入一个新元素各计一个单位;若元素复制本身昂贵,还要乘上相应成本。

若扩容每次只增加固定的一个位置,第 i 次追加就要搬迁 i−1 个旧元素,总搬迁量成为 0+1+⋯+(n−1)=n(n−1)/2。两种结构都偶尔重建,但只有几何扩容把下一次重建推迟足够久;“昂贵操作不常见”必须由具体更新规则支持。

二进制计数器的势能逐步变化 ​

从全零开始递增一个固定宽度的二进制计数器,以翻转一位计一个单位,取 Φ 为当前 1 的个数。若低位有 t 个连续的 1,且尚未溢出,一次递增将它们改成 0,再把前面的一个 0 改成 1。实际成本为 t+1,势能变化为 1−t,摊还成本恰为 2。

例如 0111 → 1000 实际翻转四位,势从 3 降到 1,故摊还成本为 4+(1−3)=2。四次翻转没有消失,而是由先前累积的两个单位信用承担。全零初态势为零、终态势非负,因此任意前 N 次递增总翻转数至多 2N。若采用模计数,全为 1 时翻成全零的摊还成本为零,仍满足上界;若要求任意精度表示,则应另外计入存储增长成本。

带 multipop 的栈也可按同一原则计费:每个元素入栈时预付它唯一一次出栈的费用。关键不是某次能弹出多少元素,而是同一个已入栈元素不能在这条操作历史里被弹出两次。

边界在于摊还界的“总量”性质。摊还 O(1) 不承诺任何单次操作快——动态数组的某次追加就是 Θ(n);它也不是概率语句,不提供尾界。需要逐操作延迟时,去摊还化会把一次大工作拆到后续操作,但还必须证明后台预算追得上新增工作。若允许的初态使势能欠账没有统一下界,常数 K 就不存在。持久化结构还能从同一旧版本多次分叉,单线版本链上存下的“信用”可能被重复使用,原摊还证明必须重新审计。

推论与应用

摊还分析是许多经典结论的语言:动态数组的常数追加、并查集近乎常数的合并与查询、伸展树的对数摊还访问界、Fibonacci 堆各类操作的摊还界,以及垃圾回收、扫描线里“每个元素至多进出一次”式的论证。全局重建把昂贵重构记到账上,自调整结构让访问序列决定结构形状,并查集摊还界则展示多种启发式怎样共同产生反 Ackermann 总界;这些页面各自证明具体账本,本页不替它们展开。最具一般性的势能法见势能法条目,选择势函数的本质,是为“未来必然发生的工作”找到一个可守恒的量。

参考资料
  • Cornell University, CS 3110 Lecture 20: Amortized Analysis, Fall 2010,“Aggregate Method”与“Potential (Physicist’s) Method”:动态表的几何扩容及总成本账本。

  • Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, Introduction to Algorithms, 4th ed., MIT Press, 2022,Ch. 16, aggregate, accounting, and potential methods。

  • Robert Sedgewick and Kevin Wayne, Algorithms, 4th ed., Addison-Wesley, 2011,§1.4, amortized cost in dynamic data structures。

关系图谱24 个相邻概念 · 3 类关系

拖动节点调整位置。

显示关系

显示:依赖

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

上位 / 更一般

暂未标注直接上位概念。

下位 / 直接特例

类型化关系