`
danix800
  • 浏览: 30392 次
  • 性别: Icon_minigender_1
  • 来自: 南京
文章分类
社区版块
存档分类
最新评论

平摊分析(Amortized Analysis)-- Potential Method

阅读更多

      势能方法将已预付的工作表示成一种“势能”,在需要的时候可以释放出来,以支付后面的操作。势是与整个数据结构而不是其中的个别对象发生联系的。 开始时,先对一个初始数据结构D_0执行n个操作。对每个i=1,2,...,n,设为第i个操作的实际代价,D_i为对数据结构D_{i-1}作用第i个操作的结果。势函数将每个数据结构D_i映射为一个实数(D_i)。第i个操作的平摊代价根据势函数的定义为

每个操作的平摊代价为其实际代价加上由于该操作所增加的势。n个操作的总的平摊代价为:

 

如果我们能定义一个势函数使得(D_n) >= (D_0),则总的平摊代价\sum_{i=1}^n (\hat{c}_i)就是总的实际代价的一个上界。若能证明对所有的i,(D_i) >= 0,则可以保证预先支付。

这里的平摊代价依赖于所选择的势函数。不同的势函数可以会产生不同的平摊代价,但它们都是实际代价的上界。

 

[Example]栈操作(PUSH,POP,MULTIPOP)

 

定义栈上的势函数为栈中对象的个数。空栈为D_0, 则(D_0)=0。因为栈中的对象数始终非负,故栈D_i具有非负的势。

 

        如果在一个包含s个对象的栈上的第i个操作是PUSH,则势差为(s+1) - s = 1, 故PUSH操作的平摊代价为=1+1 =2。

        如果栈上的第i个操作是MULTIPOP(S,k),且弹出了k'=min(k, s)个对象。该操作的实际代价为k',势差为-k',因些MULTIPOP操作的平摊代价为k'-k'=0。

        如果第i个操作是POP,则其势差为s-(s+1)=-1,其平摊代价为1-1 = 0。

 

我们已经证明了每一个栈操作的平摊代价都是O(1),这样n个操作序列的总平摊代价就是O(n)。它是总的实际代价的一个上界,所以n个操作的最坏情况代价为O(n)。

 

假设有势函数,使得对所有的i都有(D_i) >= (D_0),但是(D_0) != 0。证明存在一个势函数使得(D_0)=0,(D_i) >= 0,对所有i>=0, 且用表示的平摊代价与用表示的平摊代价相同。(习题17.3-1)

    证明:记(D_0)=k,令(D_i)=(D_i) - k,则(D_0)=0,(D_i) >= (D_0) - k = 0。且有 (D_n) - (D_0) = (D_n) - (D_0), 故它们表示的平摊代价是一样的。

  • 大小: 775 Bytes
  • 大小: 794 Bytes
  • 大小: 813 Bytes
  • 大小: 2.5 KB
  • 大小: 6.7 KB
  • 大小: 877 Bytes
0
0
分享到:
评论

相关推荐

    摊还分析(Amortized analysis)

    国外给出的摊还分析(Amortized analysis)示例以及解析

    skewheap_amortized analysis(王灿)1

    skewheap_amortized analysis(王灿)1

    Amortized Analysis

    Amortized Analysis A sequence of operations: OP1, OP2, … OPm OPi : several pops (from the stack) and one push (into the stack) ti : time spent by OPi the average time per operation:

    Algorithms Design and Analysis (Oxford)(pdf)

    Appendix A1 Amortized Analysis–Revisited Appendix A2 2-3-4 and Red–Black Trees Appendix A3 Matrix Operations Appendix A4 Linear Programming Appendix A5 Complex Numbers and Introduction to DFT ...

    Algorithms- Design and Analysis(OXFORD,2015)

    The book also has 10 appendixes which include topics like probability, matrix operations, Red-black tress, linear programming, DFT, scheduling, a reprise of sorting, searching and amortized analysis ...

    算法分析与设计课件02

    第三部分(Part III) 数据结构(Data Structures) 第十章 基本的数据结构(Elementary Data Structures) 第十一章 散列表(Hash Tables) 第十二章 二叉查找树(Binary Search Trees...分摊分析(Amortized Analysis

    算法分析与设计课件03

    第三部分(Part III) 数据结构(Data Structures) 第十章 基本的数据结构(Elementary Data Structures) 第十一章 散列表(Hash Tables) 第十二章 二叉查找树(Binary Search Trees...分摊分析(Amortized Analysis

    算法分析与设计课件01

    第三部分(Part III) 数据结构(Data Structures) 第十章 基本的数据结构(Elementary Data Structures) 第十一章 散列表(Hash Tables) 第十二章 二叉查找树(Binary Search Trees...分摊分析(Amortized Analysis

    dic.rar_Visual Dictionary

    Amortized Array-Based Dictionary的代码,高度原创性与稀有性,题目来源CMU作业题。注释清晰,可读性好

    [麻省理工学院-算法导论](英文版).chm

    Chapter 17 - Amortized Analysis Part V - Advanced Data Structures Chapter 18 - B-Trees Chapter 19 - Binomial Heaps Chapter 20 - Fibonacci Heaps Chapter 21 - Data Structures for Disjoint ...

    Algorithms: Design and Analysis

    The book also has 10 appendixes which include topics like probability, matrix operations, Red-black tress, linear programming, DFT, scheduling, a reprise of sorting, searching and amortized analysis ...

    麻省理工算法导论(完整精辟版)

    Chapter 17 - Amortized Analysis Part V - Advanced Data Structures Chapter 18 - B-Trees Chapter 19 - Binomial Heaps Chapter 20 - Fibonacci Heaps Chapter 21 - Data Structures for Disjoint ...

    【麻省理工大学】算法导论

    Chapter 17 - Amortized Analysis Part V - Advanced Data Structures Chapter 18 - B-Trees Chapter 19 - Binomial Heaps Chapter 20 - Fibonacci Heaps Chapter 21 - Data Structures for Disjoint ...

    [麻省理工学院-算法导论].Introduction.to. Algorithms,.Second.Edition

    Chapter 17 - Amortized Analysis Part V - Advanced Data Structures Chapter 18 - B-Trees Chapter 19 - Binomial Heaps Chapter 20 - Fibonacci Heaps Chapter 21 - Data Structures for Disjoint ...

    算法导论(英文第2版)

    Chapter 17 - Amortized Analysis Part V - Advanced Data Structures Chapter 18 - B-Trees Chapter 19 - Binomial Heaps Chapter 20 - Fibonacci Heaps Chapter 21 - Data Structures for Disjoint ...

    数据结构与算法分析-c语言描述第二版weiss答案

    数据结构与算法分析Data Structures and Algorithm Analysis in C第二版答案 源代码文件夹中有书中示例代码 基本和第四版相同Included in this manual are answers to most of the exercises in the textbook Data ...

    算法导论第三版 solution(英文版)

    Chapter 17: Amortized Analysis Lecture Notes 17-1 Solutions 17-14 Chapter 21: Data Structures for Disjoint Sets Lecture Notes 21-1 Solutions 21-6 Chapter 22: Elementary Graph Algorithms Lecture Notes ...

    liquidhaskell-amortized-complexity:我在WIP上发表的有关使用LiquidHaskell证明摊销数据结构的复杂性的论文

    用LiquidHaskell(功能性Pearl)证明摊销的复杂性 这是我正在进行的工作,有关直接在使用LiquidHaskell实现数据结构的Haskell代码上证明摊销的复杂性。

Global site tag (gtag.js) - Google Analytics