一、摊还分析简介
amortized analysis:不涉及概率的问题(实际上是在最坏的输入/或者其他总之最坏的情况下分析,在单次执行程序中,自然也不会涉及到数据输入的概率问题),保证最坏情况下每个操作的平均性能
主要有:
accounting analysis:
aggregate analysis:
potential amalysis:
二、聚合分析
利用聚合分析的结果:对于n个操作的序列,最坏运行时间为T(n),每个操作的平均代价为T(n)/n
在聚合分析中,我们的摊还代价为平均代价
三、accounting method
在这个算法中,有类似的多退少补的想法,我们把操作的高估/低估的时间用一个单独的account来进行“退”和“补”的操作
实际上我们的账号如果为负值我们的分析就应该终止了,我们需要保持该账户一直处于非负的状态,这样才能保证一个序列的操作的估计的摊还时间的值大于实际操作中的值。
四、势能法
这里主要是对于每个操作的估计值做了一个修正,实际上是把每个状态的数据结构映射成了一个函数值,对于第i次操作,用第i次映射的值减去第i-1次即可作为实际操作的修正项。那么最后加总后,操作估计值和操作实际值的区别取决于映射函数的选取。