算法导论 摊还分析

    摊还分析是求一个操作序列所执行的所有操作的平均时间,与平均复杂度不同的是,它不涉及输入概率,它可以保证最坏情况下每个操作的平均性能。

    摊还分析(amortized)有三种常用的分析技术,聚合分析(aggregated analysis)核算法(accounting method)势能法(potential method)

    利用聚合分析,对于所有n,执行一个n操作序列的最坏情况下的花费总时间是T(n)。因此,在最坏的情况下,每个操作的平均代价(摊还代价)为T(n)/n 。

    用核算法进行摊还分析时, 对不同的操作赋予不同的费用, 对于某些操作的费用可能大于其实际操作的代价。我们将赋予一个操作的费用称为它的摊还分析。当操作的摊还代价大于实际的代价时,将差额存入数据结构的特定对象中,存入的差额就称为信用。对于后面的摊还代价小于实际代价的情况,信用可以用来支付差额。因此可以将摊还代价分为实际操作的代价和信用。这些摊还代价对于不同的操作其赋予的值可能是不同的(不涉及数据结构的改变),这区别于聚合分析。如果我们想用核算法的摊还代价来证明每个操作的平均代价的最坏去情况可能很小,就必须确保摊还代价大于实际代价的上界,也就是信用必须为非负值。

    势能法摊还分析是将预付代价与整个数据结构相关(不同对象的同一操作代价可能不同),这种表示称为势能,将势能释放即可用来支付未来操作的代价。 势能法工作方式:假设对于一个初始的数据结构D0执行n个操作。对每个i = 0, 1, 2, 3,.....,n-1, n, 令ci为第i个操作的实际代价, 令Di为在数据结构Di-1上执行i操作得到的数据结构。势函数φ将每个数据结构Di映射为一个实数值φ(Di), 这个实数值关联到数据结构Di的势,第i个操作的摊还代价定义为:

                            

    因此每个操作的摊还代价等于实际代价加上此操作引起的势能变化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值