摊还分析

聚合分析

  简单来说聚合分析就是对于一个具有n个操作的问题,我们计算出其最坏情况下花费的总时间为T(n),因此在最坏情况下,每个操作的平均代价,也即摊还代价为T(n)/n;
  值的注意的是,摊还代价是针对于每个操作的,并且不管每个操作是否一样,我们仍然认为其摊还代价是相等的,都为T(n)/n;
  简单地举一个例子,我们将一个栈的操作进行扩充,增加一个新的操作,pop(k),它指的是将栈中元素弹出连续k个(如果栈中有这么多元素的话,否则将栈弹空为止。)那么在这种新扩充的栈中,我们如何分析各个操作的摊还代价呢?
  考虑道pop(k)的最大代价为O(n)的(因为k最大为n,否则就没有意义了),而序列中可能包含O(n)个pop(k)的操作,所以最坏情况下的时间复杂度为O(n^2);
  上述分析似乎是没有问题的,但是我们其实可以进一步分析,得到更好的上界,考虑到任何一个元素都只会压栈出栈一次,所以总的时间复杂度不会超过O(n),这样最坏情况下的时间复杂度实际上是O(n)的,那么每一个操作的瘫痪代价都是O(n)/n=O(1)的,值的注意的是,聚合分析中pop(k)的代价也是O(1)的,即使在最坏的情况下它可能达到O(n)。

核算法

后面再写吧,感觉用处不大!我也不太感兴趣!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值