您的位置:首页 > 其它

算法导论学习笔记-第十七章-平摊分析

2010-07-14 23:29 232 查看
第十七章 平摊分析

总结:平摊分析是一种用来分析执行一系列类似操作的算法的工具,它对整个操作序列的真实代价限界。本章介绍了平摊分析的三种方法,分别是聚集分析、记账方法、势能方法。每种方法都通过分析栈操作和二进制计数器增1来举例分析。最后,本章用平摊分析的方法分析了表动态扩张和收缩的代价限界。

1. 聚集分析
证明对所有的n,有n个操作所构成的序列的总时间在最坏情况下为T(n)。因此,每个操作的平均代价为T(n)/n

2. 记账方法
对不同的操作赋予不同的费用,某些操作的费用比它们的实际代价或多或少。一个操作的平摊代价可以看作两部分:实际代价和存款(或被储蓄或被用完)。必须注意,数据结构中的总存款必须始终是非负的。

例如,对于栈操作,每次PUSH的时候支付2元,1元用于支付该PUSH操作的实际代价,还有1元用于支付该元素被POP出来时的代价。而对POP操作不收取任何费用。

3. 势能方法
势能方法的关键就是定义势函数。势函数将每个数据结构Di映射为一个实数Φ(Di),即与数据结构Di相联系的势。Di为对数据结构Di-1作用第i个操作的结果。势函数需要满足Φ(Dn)>= Φ(D0)。
每个操作的平摊代价为其实际代价加上由于该操作所增加的势。n个操作的总平摊代价即为总的实际代价的一个上界。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: