第十八章平摊分析 - read.doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十八章平摊分析 - read

第六章 平摊分析 ·平摊分析基本思想 ·在平摊分析中,执行一系列数据结构操作所需要时间是通 过对执行的所有操作求平均而得出的。 ·平摊分析可用来证明在一系列操作中,即使单一的操作具 有较大的代价,通过对所有操作求平均后,平均代价还是 很小的 ·平摊分析与平均情况分析不同, 不牵涉到概率。 ·平摊分析的方法 ·聚集方法 ·会计方法 ·势能方法 6.1 聚集方法 6.1.1 聚集方法的原理 ·首先证明n个操作构成的序列在最坏情况下总的时间T(n)。 ·在最坏情况下,每个操作的平均代价就是T(n)/n。 *聚集方法为每个操作都赋予相同的平摊代价,即使序列中存 在不同类型操作时也一样。 *会计方法和势能方法对不同类型操作赋予不同的平摊代价。 6.1.2 聚集方法实例1 — 栈操作 普通栈操作分析 ·普通栈操作 PUSH(S,x):将对象压入栈S; POP(S):弹出并返回S的顶端元素。 ·时间代价 ·两个操作的运行时间都是O(1) ·我们可把每个操作的代价视为1 ·n个PUSH和POP操作系列的总代价是n ·n个操作的实际运行时间为((n)。 新的栈操作 ·操作MULTIPOP(S,k):去掉S的k个顶端对象,或当S 中包含少于k个对象时弹出整个栈。 ·实现算法 输入:栈S,k 输出:返回S顶端k个对象 MULTIPOP(S,k) 1 While not STACK-EMPTY(S) and k(0 Do 2 POP(S); 3 k(k-1. ·MULTIPOP总代价 ·设MULTIPOP(S,k)作用于一个包含s个对象的栈上 ·实际运行时间与实际执行的POP操作数成线性关系 ·只需按PUSH和POP具有代价1来分析MULTIPOP ·While循环执行的次数是从栈中弹出的对象数min(s,k) ·执行一次While循环要调用一次POP ·MULTIPOP的总代价即为min(s,k) 初始为空的栈上的n个栈操作序列的分析 ·设PUSH、POP和MULTIPOP构成n个栈操作序列 ·粗略分析 ·序列中一次MULTIPOP操作的最坏情况代价为O(n) (因为栈的大小至多为n) ·任意栈操作的最坏情况时间就是O(n), n个操作的总 代价就是O(n2) (MULITPOP操作可能有O(n)个,每个代价为O(n)) ·虽然这个分析是正确的,O(n2)的结论却不够准确。 ·精细分析 ·一个对象在每次被压入栈后至多被弹出一次 ·所以在一个非空栈上调用POP的次数(包括在 MULTIPOP内的调用)至多等于PUSH的次数, 即至多为n ·对任意的n值,包含n个PUSH、POP和MULTIPOP 操作的序列的总时间为O(n) ·每个操作的平摊代价为:O(n)/n=O(1)。 *我们想再一次强调一下,虽然我们已说明了每个栈操作的 平均代价(或平均运行时间)为O(1),但没有用到任何概率 推理。实际上是给出了一列n个操作的最坏情况界O(n)。 用n来除这个总代价即可得每个操作得平均代价(或说平 摊代价)。 6.1.2 聚集方法实例2 — 二进计数器 1. 问题定义 现实一个由0开始向上计数的k位二进计数器。 输入:k位二进制变量x,初始值为0。 输出:x+1 mod 2k。 数据结构:·A[0..k-1]作为计数器,存储x ·x的最低位在A[0]中,最高位在A[k-1]中 ·x = 2. 计数器加1算法 输入:A[0..k-1],存储二进制数x 输出:A[0..k-1],存储二进制数x+1 mod 2k   INCREMENT(A) i(0 while ilength[A] and A[i]=1 Do A[i](0; i(i+1; If ilength[A] Then A[i](1 3. 初始为零的计数器上n个INCREMENT操作的分析 图1 在16次INCREMENT操作作用下,一个八位二进计数器的值从0变到16

文档评论(0)

wujianz + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档