分析技术 -- 均摊分析

均摊分析是一种评估算法效率的方法,关注一组操作的整体代价而非单个操作。例如,在顺序检索未排序数组中,尽管单次最坏代价为n,但n次不同值的检索总代价为n²/2,平均每次检索代价降低。同样,在二进制计数器加1过程中,通过均摊分析得知每次操作平均翻转2位,而非最坏情况的n位。均摊分析适用于处理代价分布不均匀的操作序列,考虑整体概率分布来评估效率。
摘要由CSDN通过智能技术生成

        算法好坏的标准主要是从时间和空间两个方面来考虑的。为了有一个统一的比较标准,就出现了许多算法效率的估算和分析的方法。

        记得大二学习数据结构的时候,一直对“分析技术”望而生畏。最近又拿起了久违的《数据结构与算法分析》这本书啃起来。总算对“均摊分析”有了一点小小的心得。在这里记下来。

        “均摊分析是对一组操作的分析。特别是均摊分析允许处理这样一种情况, n个操作在最差情况下的代价小于任何一个操作在最差情况下的代价的n倍。均摊分析并不是把注意力集中到每个操作的单独代价,然后再把他们加起来,而是看到整个一组操作的代价,再把整体的代价分摊到每一个单独的操作上去。”

         这个是书上的原话,主要提供了两个信息:

  •         均摊分析处理的情况不是单个操作的简单叠加。也就是说在这种情况下如果一次操作的代价是m,那么进行n次操作的代价并不是 (n * m)。其实这种情况是很常见的。因为代价的分布并不平均。在后面的例子中可以看到。
  •         均摊分析的思路是从整体上对算法的效率进行把握。而不是从一次操作的情况来对算法效率定论。因为是一组操作。那么就不同与一次操作。这里就涉及到一个概率的分布的因素,最有名的就是2/8原则,这些概率的分布对算法的效率造成了很大的影响。

        下面是两个书上的例子及分析:

        【例1】分析对一组未排序的数组进行一组顺序检索的情况。    

          如果简单的分析,一次顺序查找的最差情况是找到最后一个元素才找到。那么对于一个长度为n的序列,检索的最差代价是n。如果这样的循序查找执行了n次,那么检索代价就是 (n * n)。但是,如果我们现在的情况是检索的n次中每次都是检索不同的值,也就是n次检索以后,基本数组中的每一个值都被检索了一遍。这种情况下某些元素的检索代价会很

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值