算法分析:均摊分析(Amortized Analysis)


均摊分析(Amortized Analysis)

聚合方法(Aggregate Method)

Aggregate 方法不够精确,下面的两种方法可以为每种操作分配不同的均摊代价,能够提供比较精确的上界。

记账方法(Accounting Method)

势能方法(Potential Method)

框架

  1. 从一数据结构 \(D_0\) 开始
  2. 第 i 次操作将 \(D_{i-1}\) 变为 \(D_i\)
  3. 第 i 次操作的代价为 \(c_i\)

势能函数:
\(\Phi:\ \{D_i\} \rightarrow \mathbb{R}\),其中,

  • \(\Phi(D_0) = 0\)
  • \(\Phi(D_i) \ge 0\)

均摊代价:\(\hat{c_i} = c_i + (\Phi(D_i) - \Phi(D_{i-1}))\)

均摊分析最核心的是不变式:\(\sum_{i=1}^n \hat{c_i} \ge \sum_{i=1}^n c_i\)整个操作序列中都成立。从 Accounting 方法的角度来看,就是账户余额非负;从 Potential 方法的角度来看,就是数据结构的势能非负。

记账法与势能法的视角不同:记账法关注的是每一步操作之后的账户余额,而势能法关注的是每一步的代价。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM