平摊分析优质PPT.ppt
《平摊分析优质PPT.ppt》由会员分享,可在线阅读,更多相关《平摊分析优质PPT.ppt(42页珍藏版)》请在冰豆网上搜索。
答案:
动态表.思路:
每当表溢出的时候,通过分配(用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的幂,其他;
计算,情况1:
i1刚好为2的幂。
情况1:
计算,情况2:
i1不是2的幂。
情况2:
计算,因此,n插入最坏情况的代价为(n)。
练习:
修正这个分析中的错误,证明第一次插入的平摊代价仅仅为2.,计算,情况2:
因此,n插入最坏情况的代价为(n)。
结论,平摊代价给数据结构性能提供了清晰的抽象。
当需要进行平摊分析的时候,任何方法都可以使用,但是每种方法都有特定的情况,最精确和简单。
Differentschemesmayworkforassigningamortizedcostsintheaccountingmethod,orpotentialsinthepotentialmethod,有时产生不同的边界。
yieldingradicallydifferentbounds.,