一.摊还分析(平摊分析)算法
1.经过求数据结构的一个操做序列中所执行的全部操做的平均时间来评价操做的代价数据结构
2.摊还分析不一样于平均状况分析,它不涉及到几率,它只是保证了最坏状况下每一个操做的平均性能函数
3.三种方法:性能
(1)聚合分析:肯定一个n个操做的序列的总代价的上界(最坏状况下的总代价),从而获得每一个操做的摊还代价(/n),不能具体地肯定某一个操做的摊还代价对象
(2)核算法(记帐法):对不一样类型的操做可能赋予不一样的摊还代价,而且信用必须非负值blog
1)赋予操做的平摊代价做为第i步操做的代价,其中有一部分做为通常操做代价,还有一部分可能剩余做为存款用做其余特殊操做内存
2)分析平摊代价和存款,存款非负方法
(3)势能法:对不一样类型的操做可能赋予不一样的摊还代价,im
1)定义势能函数,把数据结构集映射为实数,势能不为负总结
2)分析平摊代价
4. 记帐法和势能法
记帐法:先给定平摊代价,再分析存款和摊还代价
势能法:已知存款(势能),分析平摊代价
5.总结
(1)平摊分析为数据结构的性能提供了一个简洁的抽象概念,关注汇集行为而不是实时表现,若是根据实时表现,平摊分析毫无用处
(2)一般状况下,三种方法都能用,能够互相转换,但每一种都有特定状况使得他是最简单或最精确
(3)不一样的势能函数或记帐代价可能产生不一样的上界
二.动态表
1.问题描述:为一个表分配必定的内存空间,进行插入和删除操做,若内存不够,则从新分配更大的空间,并将原表对象复制到新空间
2.表扩张的策略:为新表分配两倍于旧表的空间
3.表收缩的策略:容许表的装载因子低于1/2,好比1/4
4.摊还分析: