核算法和势能算法:
核算法是假设我们知道每次存进去或者取出来多少钱,然后这个每次就是我们要求的摊还代价
势能算法:关于势能法,也是一样的,只不过它关心的是每一次操作后状态的改变。首先我定义一个势函数,一开始势函数的值是0,之后进行操作都会改变势函数,具体怎么改变是跟我的势函数有关的。我们定义摊还代价如下所示:
c’i = ci+Φi-Φi-1
c’i是摊还代价,ci是第i次实际操作的代价,Φi-Φi-1是第i次操作后势函数的变化,初始时势函数Φ0=0。
对两边进行从1到n的求和,得出总摊还代价=总时间代价+Φn-Φ0
为了使得总摊还代价>总时间代价,Φn>0。
也就是为了使得总摊还代价是总时间代价的上界,我们需要让势函数最后不能为负。就像过山车一样,有的操作是在蓄势,像过山车爬坡,有的操作在放势,像过山车下坡,但是总体来说不管怎么蓄势放势,势函数最后要高于水平线0。
参考:https://blog.csdn.net/sinat_41613352/article/details/85065508