算法分析:均攤分析(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