前言:这是一个继《每周新闻整理》栏目之后的新栏目。这个栏目主要为很多技术概念进行一些简明的解释。所谓简明,就是去除多余的让人费解的描述,以通俗准确的方式解释这些概念。
平摊分析是大家学习数据结构与算法分析中可能碰到概念。
我们可以把算法看作是一部机器,在这部机器中,数输入算法产生结果。平摊分析事用来分析其计算复杂性的众多方法中的一种。
平摊分析的理念是这样的:算法处理单独一个输入数的最长操作时间,往往不能很好的反映算法的性能。我们可以注意到,输入数之间往往具有某种联系,或者说他们的排布受到某种限制(比方说,对于stack不能连续且无限做pop操作而不做push)。这样最费时的操作很可能不能连续执行。而如果,他不能连续执行。计算最糟糕的情况所耗费的时间时就不能用这个操作的统计平均值。因为以此作为时间平均值就需要可以连续执行。最耗时操作所费的时间会被其他操作摊平。
平摊分析即是要找到最费时的,且可连续执行的一个操作序列并计算此操作序列的平均计算复杂度。