- 0
- 0
- 约5.19千字
- 约 35页
- 2026-01-08 发布于江苏
- 举报
平摊分析主讲:肖臻讲义由汪小林准备北大计算机系算法设计与分析
主要内容平摊分析的三种方法聚集分析记账法势能法动态表及其上的平摊分析
平摊分析在平摊分析中,执行一系列数据结构操作所需要的时间是通过执行的所有操作求平均而得出的。平摊分析可以用来证明在一系列操作中,通过对所有操作求平均之后,即使其中单一的操作具有较大的代价,平均代价还是很小的。平摊分析不牵涉到概率,平摊分析保证在最坏情况下,每个操作具有的平均性能。
平摊分析——聚集分析
栈S上的三种操作PUSH(S,x):将x压入S运行时间Ο(1)POP(S):弹出栈顶运行时间Ο(1)MULTIPOP(S,k):弹出栈顶k个对象运行时间Ο(min(k,s)),s为栈中对象个数MULTIPOP(S,k)
1whilenotSTACK-EMPTY(S)andk≠0
2doPOP(S)
3k→k-1
n个栈操作的平摊时间设有n个栈操作(PUSH、POP、MULTIPOP)的序列,作用于初始为空的栈S。总的运行时间的界是什么?每个操作都可能是MULTIPOP每个MULTIPOP的运行时间是Ο(min(k,s))=Ο(n)总的运行时间的上界为Ο(n2)这是一个紧的上界吗?
n个栈操作的平摊时间只有PUSH操作增加栈S中的对象个数所有POP和MULTIPOP弹出的对象数不会弹出多于PUSH入栈的对象数故总的运行时间为Ο(n)所有PUSH入栈的对象数为Ο(n)所有POP和MULTIPOP弹出的对象数也为Ο(n)每个PUSH、POP和MULTIPOP操作的平摊时间Ο(n)/n=Ο(1)聚集法:通过总运行时间求平均得到平摊时间,不需要对操作序列的概率分布做假设。
思考题如果定义了multipush操作,一次性地可以向stack上推入k个items,那么n个堆栈操作的均摊分析是否仍然能够保持平均每个操作O(1)的复杂度?
二进制计数器计数器A[0‥k-1]表示为k位二进制位的数组操作INCREMENT实现计数器加一运行时间Ο(k)n个INCREMENT操作
序列的运行时间
Ο(nk)(紧吗?)INCREMENT(A)
1i←0
2whileilength[A]andA[i]=1
3doA[i]←0
4i←i+1
5ifilength[A]
6thenA[i]←1
INCREMENT操作的平摊时间n个INCREMENT操作序列
的运行时间应为:Ο(n)观察INCREMENT操作序列每次操作,A[0]都反转;每两次操作,A[1]反转;每2i次操作,A[i]反转;于是,总反转次数为总时间Ο(n)每个操作平摊时间Ο(n)/n=Ο(1)
思考题如果在前面描述的k位的二进制计数器上再定义一个decrement的操作,那么n个操作的均摊分析应该是怎么样的?
平摊分析——记账法
记账法对不同的操作赋予不同的费用,某些操作的费用比它们的实际代价或多或少。我们对一个操作的收费的数量称为平摊代价。当一个操作的平摊代价超过了它的实际代价时,两者的差值就被当作存款,并赋予数据结构中的一些特定对象,可以用来补偿那些平摊代价低于其实际代价的操作。记账法与聚集分析的区别:
聚集分析中的所有操作都具有相同的平摊代价。数据结构中存储的总存款等于总的平摊代价和总的实际代价之差。注意:总存款不能是负的。(?)
n个栈操作的平摊时间对PUSH操作多收费,多出来的1元钱放在入栈的对象上,待POP和MULTIPOP把该对象弹出栈时,恰好每个对象上的1元前抵消了操作的实际代价因为栈S中对象数不可能为负,即存款不会小于0保证n个操作平摊时间之和是n个操作实际时间的上界操作实际代价平摊代价PUSH12POP10MULTIPOPmin(k,s)0
二进制计数器上的记账法分析两个问题如何对INCREMENT收费?(平摊代价)收的费用放在放在哪里?(如何平摊)注意到,每次INCREMENT只会把一个0反转为1,可能把多个1反转为零。INCREMENT的实际代价为反转的次数INCREMENT平摊代价为2,用于把0反转为1,并把剩余的1元前存放在反转成1的位上。把1反转成0的实际代价由存放在1上的1元钱支付A[1..k-1]数组中,1的个数(=存款)不可能为负
平摊分析——势能法
势能法(potential?method)不是将已预付的费用作为存在数据结构特定对象中存款来表示,而是表示成一种“势能”或“势”,它在需要时可以释放出来,以支付后面操作的额外开销。势是与整个数据结构而不是其中的个别对象发生联系的。(区别与记账法)
势函数Φ对一个初始
您可能关注的文档
最近下载
- 摩托车维修手册-春风250NK说明书.pdf VIP
- 第六节-肌骨超声技术PPT课件.pptx VIP
- 学堂在线 雨课堂 学堂云 大数据机器学习 章节测试答案.docx VIP
- 2025年中国互联网+汽车用品项目创业计划书.docx VIP
- SolidWorks高级功能与工程应用.pdf VIP
- 学堂在线 雨课堂 学堂云 工程伦理2.0 章节测试答案.docx VIP
- 村镇庙会节庆方案.docx VIP
- 英杰KRQH交流电机软启动器说明书(副本).pdf VIP
- 核心素养导向下的小学数学大单元教学设计实践.pptx VIP
- 学堂在线 雨课堂 学堂云 医学英语词汇进阶 期末考试答案.docx VIP
原创力文档

文档评论(0)