算法导论第17章 摊还分析
2013-12-21 11:04
225 查看
在摊还分析中,我们求数据结构的一个操作序列中所执行的所有操作的平均时间,来评价操作的代价,从而说明一个操作的平均代价是很低的,即使序列中某一单一操作的代价很高,不涉及改了,但可以保证最坏情况下每个操作的平均时间。
摊还分析中主要的三种方法:1、聚合分析 2、核算法(即记账法) 3、势能法
1、聚合分析:证明对所有的n,一个n个操作的序列最坏情况下花费的总时间为T(n),因此,在最坏情况下,每个操作的平均代价,或称为摊还代价为T(n)/n,这点不同于以下两种方法,以下两种方法,不同的操作有不同的代价。
2、核算法:对不同的操作赋予不同的费用,赋予某些操作的费用可能多于其实际代价,这个费用称为他的摊还代价,当一个操作的摊还代价超出其实际代价时,将差额存进数组结构中的特定对象,存入的差额称为信用,对于后续操中摊还代价小于实际代价的情况,信用可以用来支付差额,因此,可将一个操作的摊还代价分解为其实际代价和信用。不同的操作可能有不同的瘫痪代价。如果用ci表示第i个操作的真实代价,用^ci代表其摊还代价,则对任意n个操作序列,要求:
数据结构中存储的信用恰好等于总摊还代价与总实际代价的差额。数据结构所关联的信用必须一直为非负值。
3、势能法:并不将预付代价表示为数据结构中特定对象的信用,而是表示为“势能”,或"势",将势能释放用来支付未来操作的代价,势能与整个数据机构而不是特定对象相关联。
势函数Φ将每个数据结构Di映射到一个实数Φ(Di),次值即为关联到数据结构Di的势。对一个初始数据结构D0执行n个操作。对每个i = 1, 2, ,.....,n,令ci为第i个操作的实际代价,令Di为在数据结构Di-1上执行第i个操作得到的结果数据结构。第i个操作的摊还代价^ci用势函数Φ定义为:
^ci = ci + Φ(Di) -
Φ(Di-1)
每个操作的摊还代价等于其实际代价加上次操作引起的势能变化。n个操作的总的平摊代价为:
定义一个Φ势函数,使得Φ(Dn)>=
Φ(D0), 则总的平摊代价就是总的实际代价的一个上界。对所有的i,有Φ(Di)>= Φ(D0),可以保证预先支付,Φ(D0)一般为0
如果第i个操作的势差Φ(Di) - Φ(Di-1) > 0 则平摊代价^ci表示对第i个操作多收了非,同时数据结构的势也增加了,如果< 0,则表示平摊代价的不足收费,可以通过减少势来支付该操作的实际代价。不同的势函数,可能产生不同的平摊代价。但他们都是实际代价的上届。
摊还分析中主要的三种方法:1、聚合分析 2、核算法(即记账法) 3、势能法
1、聚合分析:证明对所有的n,一个n个操作的序列最坏情况下花费的总时间为T(n),因此,在最坏情况下,每个操作的平均代价,或称为摊还代价为T(n)/n,这点不同于以下两种方法,以下两种方法,不同的操作有不同的代价。
2、核算法:对不同的操作赋予不同的费用,赋予某些操作的费用可能多于其实际代价,这个费用称为他的摊还代价,当一个操作的摊还代价超出其实际代价时,将差额存进数组结构中的特定对象,存入的差额称为信用,对于后续操中摊还代价小于实际代价的情况,信用可以用来支付差额,因此,可将一个操作的摊还代价分解为其实际代价和信用。不同的操作可能有不同的瘫痪代价。如果用ci表示第i个操作的真实代价,用^ci代表其摊还代价,则对任意n个操作序列,要求:
数据结构中存储的信用恰好等于总摊还代价与总实际代价的差额。数据结构所关联的信用必须一直为非负值。
3、势能法:并不将预付代价表示为数据结构中特定对象的信用,而是表示为“势能”,或"势",将势能释放用来支付未来操作的代价,势能与整个数据机构而不是特定对象相关联。
势函数Φ将每个数据结构Di映射到一个实数Φ(Di),次值即为关联到数据结构Di的势。对一个初始数据结构D0执行n个操作。对每个i = 1, 2, ,.....,n,令ci为第i个操作的实际代价,令Di为在数据结构Di-1上执行第i个操作得到的结果数据结构。第i个操作的摊还代价^ci用势函数Φ定义为:
^ci = ci + Φ(Di) -
Φ(Di-1)
每个操作的摊还代价等于其实际代价加上次操作引起的势能变化。n个操作的总的平摊代价为:
定义一个Φ势函数,使得Φ(Dn)>=
Φ(D0), 则总的平摊代价就是总的实际代价的一个上界。对所有的i,有Φ(Di)>= Φ(D0),可以保证预先支付,Φ(D0)一般为0
如果第i个操作的势差Φ(Di) - Φ(Di-1) > 0 则平摊代价^ci表示对第i个操作多收了非,同时数据结构的势也增加了,如果< 0,则表示平摊代价的不足收费,可以通过减少势来支付该操作的实际代价。不同的势函数,可能产生不同的平摊代价。但他们都是实际代价的上届。
相关文章推荐
- 算法导论习题解-第17章摊还分析
- 《算法导论》学习分享——17. 摊还分析
- 摊还分析(1)——算法导论(23)
- 《算法导论》笔记(11) 摊还分析 部分习题
- 摊还分析(2)——算法导论(24)
- 第17章 摊还分析
- 《算法导论》笔记(8) 动态规划、贪心法、摊还分析 简述
- 《算法导论》笔记 第17章 17.1 聚集分析
- 《算法导论》笔记 第21章 *21.4 带路径压缩的按秩合并的分析
- 摊还分析---算法导论第十七章
- 算法导论第五章概率分析和随机算法最后思考题
- Amortized Analysis 摊还分析
- 《算法导论》:等概率的前提下通过判定树来分析折半查找的性能
- 《算法导论》笔记 第17章 17.2 记账方法
- 算法导论--算法的概率分析技术
- 算法导论原理分析系列1:序
- 算法导论17:摊还分析学习笔记(KMP复杂度证明)
- 《算法导论》 6.2 d叉堆的分析
- 《算法导论》第5章 概率分析和随机算法 个人笔记
- 算法导论 第5章 概率分析和随机算法