第 6章平 摊分析( Amortized analysis).ppt
《第 6章平 摊分析( Amortized analysis).ppt》由会员分享,可在线阅读,更多相关《第 6章平 摊分析( Amortized analysis).ppt(34页珍藏版)》请在麦多课文档分享上搜索。
1、第 6章 平 摊 分 析 ( Amortized analysis),基本思想,在平摊分析中,执行一系列 数据结构操作所需要时间是 通过对执行的所有操作求平 均而得出的,对一个数据结构 要执行一系列操作:有的代价很高有的代价一般有的代价很低,? 各个操作的代价?,将总的代价平摊到 每个操作上,平 摊 代 价,不涉及概率 不同于平均情况分析,平摊分析的方法,聚集方法会计方法势能方法,聚集分析法-原理,对数据结构共有n个操作 最坏情况下: 操作1: t1 操作2: t2 。 。 。 操作n: tn,T(n)=,平摊代价: T(n)/n,操作序列中的每个操作被赋予相同的代价,不管操作的类型,平摊分析
2、实例1-栈操作,普通栈操作PUSH(S,x):将对象压入栈SPOP(S):弹出并返回S的顶端元素 时间代价:两个操作的运行时间都是O(1)我们可把每个操作的代价视为1n个PUSH和POP操作系列的总代价是nn个操作的实际运行时间为(n),平摊分析实例1-栈操作,新的栈操作操作MULTIPOP(S,k):去掉S的k个顶端对象或当S中包含少于k个对象时弹出整个栈,实现算法输入:栈S,k输出:返回S顶端k个对象MULTIPOP(S,k)1 While not STACK-EMPTY(S) and k0 Do2 POP(S);3 kk-1,实际运行时间与实际执行的POP操作数成线性关系,While循环
3、执行的次数是从栈中弹出的对象数min(s,k),执行一次While循环要调用一次POP,MULTIPOP的总代价即为min(s,k),平摊分析实例1-栈操作,初始为空的栈上的n个栈操作序列的分析 由PUSH、POP和MULTIPOP长为n的栈操作序列,操作1: t1 操作2: t2 。 。 。 操作n: tn,T(n)=?,最坏情况下,每个操作都是:MULTIPOP每个MULTIPOP的代价最坏是?,T(n)=n2,上面的分析太粗糙了!我们从元素进出栈的情况来分析,所以在一个非空栈上调用POP的次数(包括在MULTIPOP内的调用)至多等于PUSH的次数, 即至多为n,T(n)=2n,平摊代价
4、 =T(n)/n =O(1),一个对象在每次被压入栈后至多被弹出一次,!Note: 分析过程没有使用任何的概率!,于是:最坏情况下 这样的一个操作序 列的时间复杂度最 多为O(n),平摊分析实例2-二进计数器,1. 问题定义实现一个由开始向上计数的k位二进计数器。输入:k位二进制变量x,初始值为0。输出:x+1 mod 2k。数据结构:A0k-1作为计数器,存储xx的最低位在A0中,最高位在Ak-1中x =,平摊分析实例2-二进计数器,2. 计数器加1算法输入:A0k-1,存储二进制数x输出:A0k-1,存储二进制数x+1 mod 2k,INCREMENT(A)1 i02 while ilen
5、gthA and Ai=1 Do3 Ai0;4 ii+1;5 If ilengthA Then Ai1,平摊分析实例2-二进计数器,3.初始为零的计数器上n个INCREMENT操作的分析,Counter total N A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 0 0 0 0 0,Counter total N A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1,Counter total N A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 0 0 0 0 00 0 0 0
6、 0 0 0 1 1 2 0 0 0 0 0 0 1 0 3,Counter total N A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1 10 0 0 0 0 0 1 0 3 3 0 0 0 0 0 0 1 1 4,Counter total N A7 A6 A5 A4 A3 A2 A1 A0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1 10 0 0 0 0 0 1 0 30 0 0 0 0 0 1 1 4 4 0 0 0 0 0 1 0 0 7,Counter total N A7 A6 A5
7、 A4 A3 A2 A1 A0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1 10 0 0 0 0 0 1 0 30 0 0 0 0 0 1 1 40 0 0 0 0 1 0 0 7 5 0 0 0 0 0 1 0 1 86 0 0 0 0 0 1 1 0 107 0 0 0 0 0 1 1 1 11,每次INCREMENT操作的代价与被改变值的位数成线性关系,粗略地讲:每次INCREMENT最多改变k位 共nk,每次操作发生一次变化 共n次,每隔2次发生一次改变 共n/2,每隔4次发生一次改变 共n/4,每隔8次发生一次改变 共n/8,总共发生的改变为: n/2i (
8、i=0,2,log2n 2n,会计方法-基本原理,一个操作序列中有不同类型的操作 不同类型的操作的操作代价各不相同 于是我们为每种操作分配不同的平摊代价,平摊代价可能比实际代价大,也可能比实际代价小,操作被执行时,支付了平摊代价,如果平摊代价比实际代价高:平摊代价的一部分用于支付实际代价,多余部分作为存款附加在数据结构的具体数据对象上,如果平摊代价比实际代价低:平摊代价及数据对象上的存款用来支付实际代价,只要我们能保证:在任何操作序列上,存款的总额非负,则所有操作平摊代价的总和就是实际代价总和的上界,平摊代价的总和 ?实际代价的总和,于是:我们在各种操作上定义平 摊代价使得任意操作序列上存款
9、总量是非负的,将操作序列上平 摊代价求和即可得到这个操作序 列的复杂度上界,会计方法实例 1 栈操作,1. 各栈操作的实际代价:PUSH 1,POP 1,MULTIPOP min(k,s),2. 各栈操作的平摊代价: PUSH 2,POP 0,MULTIPOP 0,会计方法实例 1 栈操作,3. 栈操作序列代价分析,只要我们的操作序列市合理的,则可以保证 存款总和非负,于是所有操作的平摊代价总和就是操作 序列的是及代价总和的上界 =?,长度为n的操作序列中: PUSH操作的个数=n 于是: 平摊代价的总和=2n,会计方法实例 2 -二进计数器,1. 计数器加1算法输入:A0k-1,存储二进制数
10、x输出:A0k-1,存储二进制数x+1 mod 2kINCREMENT(A) 1 i0 2 while ilengthA and Ai=1 Do 3 Ai0; 4 ii+1; 5 If ilengthA 6 Then Ai1,会计方法实例 2 -二进计数器,初始为零的计数器上n个INCREMENT操作的分析,显然:这个操作序列的代价与0-1或者 1-0翻转发生的次数成正比,定义:0-1翻转的平摊代价为 21-0翻转的平摊代价为0,任何操作序列,存款余额是计数器中1的个数,非负因此,所有的翻转操作的平摊代价的和是这个操作序列代价的上界,对每个INCREMENT操作 :找到左起的第一个0,将他翻转
11、成1支付平摊代价2将这个0之前的所有1翻转成0支付平摊代价0对这个INCREMENT操作而言,支付了凭摊代价2,对于长度为n的INCREMENT操作序列:支付的评摊代价的总和为2n因此,这样一个操作序列的复杂度上界为2n,任何操作序列,存款余额是计数器中1的个数,非负因此,所有的翻转操作的平摊代价的和是这个操作序列代价的上界,势能分析基本原理,在会计方法中,如果操作的平摊代价比实际代价大,我们将余额与具体的数据对象关联 如果我们将这些余额都与整个数据结构关联,所有的这样的余额之和,构成数据结构的势能 如果操作的平摊代价大于操作的实际代价-势能增加 如果操作的平摊代价小于操作的实际代价,要用数据
12、结构的势能来支付实际代价-势能减少,势能分析基本原理,势能的定义: 对一个初始数据结构D0执行n个操作 对操作i:实际代价Ci, 将数据结构Di-1 变为Di 势函数将每个数据结构Di映射为一个实数(Di) 平摊代价ci定义为:cici + (Di)-(Di-1),势能分析基本原理,n个操作的总的平摊代价为:,于是势函数满足(Dn)(D0),则总的 平摊代价就是总的实际代价的一个上界,在实践中,我们定义(D0)为0,然后再证明对所有i有(Di)0,平摊代价依赖于所选择的势函数。不同的势函数可能会产生不同的平摊代价,但它们都是实际代价的上界,势能方法实例1 栈操作,(D)=栈D中对象的个数初始栈
13、D0为,(D0)=0因为栈中的对象数始终非负,第i个超作之后的栈DI满足(Di)0=(D0) 于是: 以表示的n个操作的平摊代价的总和就表示了实际代价的一个上界,势能方法实例1 栈操作,作用于包含s个对象的栈上的栈操作的平摊代价,如果第i个操作是个PUSH操作实际代价:ci=1势差:(Di) (Di-1)=(s+1) s=1,平摊代价:ci =ci+(Di)(Di-1)=1+1=2,如果第i个操作是MULTIPOP(S, k)且弹 出了k=min(k,s)个对象实际代价:ci=k势差:为(Di) (Di-1)= k平摊代价:ci=ci+(Di)(Di-1)=k k=0,如果第i个操作是POP实
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 平摊 分析 AMORTIZEDANALYSIS PPT
