平摊分析.ppt

上传人:b****9 文档编号:848944 上传时间:2022-10-13 格式:PPT 页数:42 大小:461KB
下载 相关 举报
平摊分析.ppt_第1页
第1页 / 共42页
平摊分析.ppt_第2页
第2页 / 共42页
平摊分析.ppt_第3页
第3页 / 共42页
平摊分析.ppt_第4页
第4页 / 共42页
平摊分析.ppt_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

平摊分析.ppt

《平摊分析.ppt》由会员分享,可在线阅读,更多相关《平摊分析.ppt(42页珍藏版)》请在冰豆网上搜索。

平摊分析.ppt

算法导论,平摊分析动态表聚集分析法记账法势能法胡学钢、吴共庆,哈希表应该多大?

目标:

使表尽可能的小,但是还足够大不会溢出(或者变为低效率)。

问题:

如果我们不能预先知道合适的大小应该怎么办?

答案:

动态表.思路:

每当表溢出的时候,通过分配(用malloc或者new)一个新的更大表使其增长。

将原来表中的所有项都移动到新表中,然后释放旧表的内存。

动态表举例,1.插入2.插入,溢出,动态表举例,1.插入2.插入,溢出,动态表举例,动态表举例,1.插入2.插入,1.插入2.插入3.插入,动态表举例,溢出,1.插入2.插入3.插入,动态表举例,溢出,1.插入2.插入3.插入,动态表举例,溢出,1.插入2.插入3.插入,动态表举例,动态表举例,1.插入2.插入3.插入4.插入,动态表举例,溢出,1.插入2.插入3.插入4.插入5.插入,动态表举例,溢出,1.插入2.插入3.插入4.插入5.插入,动态表举例,1.插入2.插入3.插入4.插入5.插入,动态表举例,1.插入2.插入3.插入4.插入5.插入6.插入7.插入,最坏情况分析,考虑一连串n个插入。

指向一个插入的最坏情况时间是(n).因此,n个插入的最坏运行时间是n(n)=(n2).错误!

实际上,n个插入的最坏情况费用进行是(n)(n2).我们看看为什么是这样:

令ci=第i个插入的代价,如果i1刚好是2的幂,其他.,严格分析,严格分析,令ci=第i个插入的代价,如果i1刚好是2的幂,其他.,n个插入的费用.,因此,每个动态表操作的平均费用是(n)/n=

(1).,严格分析(续),平摊分析,平摊分析是一种分析方法,证明在一系列操作中,每个操作的平均代价很小,即使在这个系列中一个操作的代价比较大。

虽然我们进行平均,但是,其中并不涉及概率!

平摊分析保证在最坏情况下每个操作的平均性能。

平摊分析的类型,三种常用的平摊arguments:

聚集法,记账法,势能法.我们刚刚看到的是聚集分析。

聚集法虽然简单,但是不如其他两种方法精确。

特别是,记账法和势能法可以给每个操作分配特定的平摊代价。

记账法,给第i个操作虚构一个平摊代价i,1单位的工作付$1(比如时间).执行操作hisfeeisconsumedtoperformtheoperation.任何当时没有消费的余额存在银行准备给以后的操作使用。

银行的余额不能为负值!

我们必须要保证对所有的n,这样,总的平摊代价提供了总的实际代价的上界。

例子:

溢出,动态表的记账分析,假设给第i个插入操作平摊费用为i=$3。

$1付给这次插入操作$2给以后表倍增预存当表倍增的时候,$1付给移动一个最近加入的项,同时$1付给移动一个旧的项.,动态表的记账分析,假设给第i个插入操作平摊费用为i=$3。

$1付给这次插入操作$2给以后表倍增预存当表倍增的时候,$1付给移动一个最近的项,同时$1付给移动一个旧的项.,举例:

溢出,例子:

动态表的记账分析,假设给第i个插入操作平摊费用为i=$3。

$1付给这次插入操作$2给以后表倍增预存当表倍增的时候,$1付给移动一个最近的项,同时$1付给移动一个旧的项.,记账分析(续),键的不变量:

存款余额不会低于0.这样,平摊代价的和给真实代价提供了一个上界。

i为分配的平摊代价(虚拟),另外,banki=banki-1+i-ci*第一个操作的代价仅仅是$2,不是$3.,令ci=第i个插入的代价,如果i1刚好是2的幂,其他.,势能法,思路:

将银行帐号视为动态集合的势能。

框架:

开始时,初始的数据结构为D0.操作i将Di1转换为Di.操作i的代价为ci.定义势能函数:

DiR,使得(D0)=0并且对所有的i,(Di)0.平摊代价i和相关的定义为i=ci+(Di)(Di1).,理解势能,potentialdifferencei,如果i0,那么ici.操作istoresworkinthedatastructureforlateruse.如果i0,那么ici.数据结构将存储的工作取出付操作i的代价。

Theamortizedcostsboundthetruecosts,n个操作的平摊代价之和为,两边求和。

Theamortizedcostsboundthetruecosts,Theseriestelescopes.,n个操作的平摊代价之和为,Theamortizedcostsboundthetruecosts,n个操作的平摊代价之和为,表倍增的势能分析,定义在i第个插入后表的势能为(假设,Note:

例子:

记账法),平摊代价分析,第i个插入的平摊代价是,平摊代价分析,第i个插入的平摊代价是,如果i1刚好是2的幂,其他;,平摊代价计算,第i个插入的平摊代价是,如果i1刚好是2的幂,其他;,如果i1刚好是2的幂,其他;,如果i1刚好是2的幂,其他;,计算,情况1:

i1刚好为2的幂。

情况1:

i1刚好为2的幂。

计算,情况1:

i1刚好为2的幂。

计算,情况1:

i1刚好为2的幂。

计算,情况2:

i1不是2的幂。

情况1:

i1刚好为2的幂。

情况2:

i1不是2的幂。

情况1:

i1刚好为2的幂。

计算,情况2:

i1不是2的幂。

情况1:

i1刚好为2的幂。

计算,因此,n插入最坏情况的代价为(n)。

情况2:

i1不是2的幂。

情况1:

i1刚好为2的幂。

计算,情况2:

i1不是2的幂。

情况1:

i1刚好为2的幂。

练习:

修正这个分析中的错误,证明第一次插入的平摊代价仅仅为2.,计算,情况2:

i1不是2的幂。

情况1:

i1刚好为2的幂。

因此,n插入最坏情况的代价为(n)。

结论,平摊代价给数据结构性能提供了清晰的抽象。

当需要进行平摊分析的时候,任何方法都可以使用,但是每种方法都有特定的情况,最精确和简单。

Differentschemesmayworkforassigningamortizedcostsintheaccountingmethod,orpotentialsinthepotentialmethod,有时产生不同的边界。

yieldingradicallydifferentbounds.,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1