『算法』摊还分析

摊还分析/平摊分析(Amortized Analysis):从白痴到入门 什么是摊还分析? 摊还分析其实就是评价某一个操作的代价,方法就是求某数据结构中一系列操作的平均时间。 摊还分析与概率无关,可以保证某一系列操作在最坏情况下的平均性能。 什么意思呢?举个例子,我们都知道栈这个数据结构,假设现在一个栈支持三种操作: POP(S) //弹出栈顶元素 PUSH(S,x) //将元素x压如栈中 MultiPop(S,k) //将栈的前k个元素弹出 普通分析: 设栈为空栈,那么一系列操作,操作总数为n,分别执行PUSH(S,x), POP(S), MultiPop(S 阅读详情

聚合分析 (aggregate analysis)

一个 n 个操作的序列最坏情况下花费的总时间为 T(n)T(n), 则在最坏情况下, 每个操作的摊还代价为 T(n)nT(n)n

如栈中的 push, pop 操作都是 O(1)O(1), 增加一个新操作 multipop,

def multipop(stk,k):
  while not stk.empty() and k>0:
    stk.pop()
    k-=1

multipop 的时间复杂度为 min(stk.size,k), 最坏情况为 O(n)O(n), 则 n 个包含 push pop multipop 的操作列的最坏情况是 O(n2)O(n2), 并不是这样, 注意到, 必须栈中有元素, 再 pop, 所以 push 操作与 pop 操作 (包含 multipop 中的 pop), 个数相当, 所以 实际上应为 O(n)O(n), 每个操作的摊还代价 为 O(1)O(1)

核算法 (accounting method)

对不同操作赋予不同费用 cost (称为摊还代价 c′ici′), 可能多于或者少于其实际代价 cici

当 c′i>cici′>ci, 将 c′i−cici′−ci( credit) 存入数据结构中的特定对象.. 对于后续 c′i<cici′<ci 时, 可以使用这些 credit 来 支付差额.. 有要求

∑ic′i⩾∑ici∑ici′⩾∑ici

如栈

opc′ici′cici
push21
pop01
multipop0min(s,k)

由核算法, 摊还代价满足要求, 所以 n 个操作总代价 O(n)O(n), 每个操作摊还代价为 O(1)O(1)

势能法 (potential method)

势能释放用来支付未来操作的代价, 势能是整个数据结构的, 不是特定对象的 (核算法是).

数据结构 D0D0 为初始状态, 依次 执行 n 个操作 opiopi 进行势能转换 Di=opi(Di−1),i=1,2,…,nDi=opi(Di−1),i=1,2,…,n , 各操作代价为 cici

势函数 Φ:Di→RΦ:Di→R, Φ(Di)Φ(Di) 即为 DiDi 的势

则第 i 个操作的摊还代价

c′i=ci+Φ(Di)−Φ(Di−1)ci′=ci+Φ(Di)−Φ(Di−1)

则

∑i=1nc′i=∑i=1nci+Φ(Dn)−Φ(D0)∑i=1nci′=∑i=1nci+Φ(Dn)−Φ(D0)

如果定义一个势函数 Φ,st Φ(Di)⩾Φ(D0)Φ,st Φ(Di)⩾Φ(D0), 则总摊还代价给出了实际代价的一个上界
可以简单地以 D0为参考状态,then Φ(D0)=0D0 为参考状态,then Φ(D0)=0

例如栈操作,
设空栈为 D0D0, 势函数定义为栈的元素数
对于 push, Φ(Di)−Φ(D0)=1Φ(Di)−Φ(D0)=1
则 c′=c+Φ(Di)−Φ(D0)=c+1=2c′=c+Φ(Di)−Φ(D0)=c+1=2

对于 multipop, Φ(Di)−Φ(D0)=−min(k,s)Φ(Di)−Φ(D0)=−min(k,s)
则 c′=c−min(k,s)=0c′=c−min(k,s)=0

同理 pop 的摊还代价也是 0, 则总摊还代价的上界 (最坏情况) 为 O(n)O(n)

算法导论随笔(十二):摊还分析(Amortized Analysis)之聚合分析、核算法和势能法 在算法导论随笔(一): 操作计数与复杂度Big(O)中,我简单介绍了计算一个算法的时间复杂度的方法。该方法结算结果虽然都是正确的,但有时不一定特别准确地代表复杂度函数的渐进上界。因此,人们创建了一个分析方式,可以更精确地表示一个复杂度函数的渐进上界。这个分析方式就是我今天要介绍的摊还分析。 1.为什么要引入摊还分析 前文说到,使用分析操作计数的方法来计算时间复杂度时,有的时候求出的渐进上限并不准确,也就是说,由于我们一直是在考虑程序消耗时间的最坏情况,而程序并不是一直处于最坏情况。因此我们求出的复杂度经常高 阅读详情

相关推荐

《算法导论》学习分享——17. 摊还分析

17. 摊还分析 在摊还分析中,我们求数据结构的一个操作序列中所执行的所有操作的平均时间,来评价操作的代价。这样,我们就可以说明一个操作的平均代价是很低的,即使序列中某个单一操作的代价很高。摊还分析不同于平均情况分析,它并不涉及概率,它可以保证最坏情况下每个操作的平均性能。 本章介绍三种摊还分析方法: * 聚合分析 * 核算法 * 势能法 首先我们先看两个小问题 栈操作 对...

MaoMao-go 1634

【算法导论】摊还分析

算法导论摊还分析知识

qq_64585761的博客 1608

《算法导论》笔记(11) 摊还分析 部分习题

习题11.1-3 i为2的幂时代价为i,其余代价为1,聚合分析(1+2+1+4+1+1+1+8.....)/n,若n趋近无穷大,极限为3。每次操作摊还代价为3. 习题11.2-2 核算法解上题。在i/2+1到第i-1次操作之间,每次操作实际代价1,信用2,经过i/2次之后,累积信用为i,第i个操作一次性付出代价i,消耗信用为i-1,若n足够大,可知每个操作的摊还代价为3。 习题11.3-2 势

nklofy的专栏 2182

摊还分析

在摊还分析中,我们求数据结构的一个操作序列中所执行的所有操作的平均时间,来评价操作的代价。注意,摊还分析不同于上一篇博客中的平均情况分析,它并不涉及不同输入出现的概率,可以保证最坏情况下每个操作的平均性能。这样,就可以说明一个操作的平均代价是很低的,即使序列中某个单一操作的代价很高。 但首先要强调一点就是,摊还分析中赋予对象的信用或者费用,仅仅是用来分析而已,不需要也不应该出现在程序中。 我们以栈操作作为示例讲解摊还分析三种方法,然后以数据结构中动态表插入n个元素来示范如何应用摊还分析的方法。

李春春的专栏 6036

摊还分析在算法设计中的应用

摊还分析是算法分析中一种常用的技术,它通过分析一系列操作的平均代价来评价数据结构操作的效率。摊还分析提供了一种分析最坏情况下算法性能的方法,它通常应用于具有特定性质的数据结构,如栈、队列、动态数组等。在本文中,我们将详细探讨摊还分析的三种主要技术:聚合分析、核算法和势能法,并通过伪代码和C代码示例来说明这些方法的应用。

笔者从事电信媒体开发多年,愿意将多年的开发经验分享给同行 624

摊还分析:算法复杂度的隐藏真相

​​动态数组​​:O(1)插入背后的扩容成本​​斐波那契堆​​:O(1)减少键的魔法​​实时系统​​:最坏情况与平均成本的平衡正如算法大师Donald Knuth所言:"摊还分析是算法工程师的显微镜,让我们看清复杂度的微观世界。" 掌握摊还分析,您将拥有优化算法性能的终极武器。

JDT的专栏 1105

摊还分析(1)——算法导论(23)

摊还分析(amortized analysis)是一种分析一个操作序列中所执行的所有操作的平均时间分析方法。与一般的平均分析方法不同的是,它不涉及概率的分析,可以保证最坏情况下每个操作的平均性能。 下面介绍瘫痪分析中的最常用的三种技术。 1. 聚合分析 1.1 栈操作 先来看对栈进行操作的例子。 通常,栈能够进行push(S, x)与pop(S)操作,其时间复杂度均为O(1)。现在定义一...

dayin201608的博客 736

47、算法设计与摊还分析全解析

本文深入解析了多种经典算法设计技术,包括编码与压缩算法、装箱启发式算法、几何算法、选择与乘法算法、动态规划算法、随机算法和博弈算法等。重点讨论了摊还分析的基本概念及其在数据结构分析中的应用,详细分析了二项队列、斜堆、斐波那契堆和伸展树的操作及其摊还时间复杂度。通过势函数方法,评估了这些数据结构在一系列操作中的长期性能表现,为算法设计和优化提供了理论支持。文章最后总结了不同数据结构的适用场景,帮助开发者根据实际需求选择合适的技术方案。

rr23456的博客 123

【算法证明 四】摊还分析

按照算法导论的顺序,下面该介绍数据结构,动态规划,贪心算法了。但是基本的数据结构比较简单,靠数学直觉也能很好的理解,就不总结了。动规和贪心是那种听懂很简单,用起来很难得算法,准备放在后面总结。摊还分析对一般人来说是比较新奇得技术,应该比较少的人会注意到这类问题,而且与图相关的算法复杂度分析经常遇到需要摊还分析的情况。所以接下来两节准备总结下摊还分析的技术和思考逻辑。并先用该技术来证明的算法复杂度。

weixin_43233774的博客 673

用AT7456E给监控摄像头加OSD?5步搞定时间水印和Logo叠加

本文详细解析了如何使用AT7456E视频字符叠加芯片为监控系统添加专业级OSD功能,涵盖硬件设计、字符库编程和系统集成等关键步骤。通过5步操作实现时间水印和Logo叠加,提升监控系统的可用性和专业性,特别适合安防和工业视觉应用。

sea99的博客 1011

电磁场仿真:电磁场基础理论_(13).微波技术基础

微波是指频率在300 MHz到300 GHz之间的电磁波。这一频率范围对应的波长为1米到1毫米。

2401_87715305的博客 1316

算法的摊还分析

在摊还分析 (amortized analysis) 中,研究的是所执行的所有操作的平均时间(摊还代价),将其作为评价的标准。 聚合分析(aggregate analysis) 是先确定一个含nnn个操作的操作序列总代价的上界T(n)T(n)T(n),从而每个操作的平均代价为T(n)n\frac{T(n)}{n}nT(n)​,将其作为每个操作的摊还代价,所有操作具有相同的摊还代价。例1:栈操作 定义一个具有以下3种操作的栈:对一个空栈进行一个由nnn个 push、pop、multipop操作组成的操作序列,

Shao_yihao的博客 325

Transformer模型在时间序列预测中的应用:价格和产量预测

Transformer模型由Attention is All You Need论文提出,并在机器翻译任务上取得了巨大成功。其主要特点是使用自注意力机制代替传统的递归或卷积操作进行序列建模。Transformer模型由编码器和解码器组成,其中编码器用于学习输入序列的表示,解码器用于生成目标序列。在时间序列预测中,我们只需要使用Transformer的编码器部分。编码器将历史数据作为输入,学习一个表示,然后使用该表示来预测未来的数值。

HnrzLinux的博客 736

算法导论笔记:17摊还分析

在摊还分析中,通过求数据结构的一系列的操作的平均时间,来评价操作的代价。这样,即使这些操作中的某个单一操作的代价很高,也可以证明平均代价很低。摊还分析不涉及概率,它可以保证最坏情况下每个操作的平均性能。          摊还分析有三种常用的技术:        聚合分析,它确定n个操作的总代价的上界为T(n),所以每个操作的平均代价为T(n)/n。每个操作都有相同的摊还代价。      

程序员的自我修养 8401

simulink的电动汽车制动系统热管理仿真

本文系统研究了电动汽车制动系统热管理仿真技术。通过建立机电液多物理场耦合模型,分析了不同工况下的动态热平衡特性。提出基于MPC的动态调节和NSGA-II多目标优化算法,使电池温度波动降低60%。创新性采用石墨烯相变材料与微通道液冷复合技术,冷却系统能耗减少40%。研究构建了完整的工程验证平台,涵盖200kW电制动测试台和高精度热成像系统。展望指出,未来将结合Transformer预测和强化学习算法,进一步优化热管理策略。该研究为电动汽车制动系统热管理提供了从理论建模到工程实施的完整解决方案。

xiaoheshang_123的博客 121

在jetson上对fastdeploy进行源码编译(完整版)

在大多数Linux发行版中,你可以使用包管理器安装Python开发包。根据jetpack的版本选择对应的推理库版本。在~/.bashrc中写入这三行。

如果想成为中心,那么就到中心去吧。 677

摊还分析,核算法与势能法

为什么我们需要摊还分析 上篇文章我们提到了算法的时间复杂度分析,给定输入规模,我们分析出算法的耗时,但是这样够了吗? 有时输入规模不是一个静态的值,可能输入是一系列操作,比如在这棵树里先插入结点,再做一个查找,再删除最小值,再与另一棵树合并。(插入,查找,删除最小值,合并)就是一个输入的操作序列。 为了对这类操作序列耗时进行分析,我们引入了摊还分析:n个操作的总耗时除以n。 看到这儿你可能会想,这...

sinat_41613352的博客 3397

飞牛fnNAS搭建Web网页版OFFICE(WPS)软件

本文介绍了如何在飞牛NAS上通过Docker容器部署WPS Office办公软件。主要内容包括:启用Docker服务、准备项目文件夹结构、使用Compose方式构建容器、解决端口冲突问题、配置中文输入法和字体库,以及通过ZeroTier实现远程访问。文章详细说明了每个步骤的操作方法,包括容器启动、输入法设置、字体添加和文件存储位置配置。最后还介绍了使用ZeroTier内网穿透技术实现远程访问NAS上WPS服务的方法,让用户可以在不同设备上随时编辑NAS中的文件。整个部署过程完整清晰,为NAS用户提供了便捷的

dgnankai的专栏 1698

算法导论摊还分析总结Ⅰ

摊还分析 摊还分析(amortized analysis): 主要通过求解数据结构中一系列的操作,获得操作的平均时间评价操作的代价; 不同于算法的期望,不涉及概率的另一种评价操作代价的方法; 主要分为三种方法:聚合分析、核算法、势能法。 首先介绍两个常规例子,之后通过例子对上述方法进行说明: 例1 栈操作 提供三类栈的基本操作: Push(x):将xxx压入栈中; pop():删除栈顶元素; Multipop(k):删除栈顶kkk个元素; 其中假设基本操作不存在对空栈的删除操作。 例2 二进制计数器

ssw的博客 839

Allegro层叠中的Etch Factor-铜皮的腐蚀因子如何计算

在用Allegro进行PCB设计的时候,Cross-section中需要填入对应的信息,一般填入每层的厚度即可,如下图。当PCB需要进行仿真分析的时候,Etch-Factor这个值是必须要填写的,如下图。实际铜皮进行蚀刻的时候,Etch-Factor的值并不是标准的90度,如下图。线路层实际形状是个梯形,Etch-Factor代表的就是梯形的角度,如下图。首先输入数值,比如1,再点击Inv,最后点击tan-1,可以得到角度的值。如果tanσ=2,σ=63.4,如下图计算结果。即tanσ=1,得到σ=45。

weixin_54787054的博客 884

手把手教你学Simulink--智能控制算法的控制算法领域仿真建模实例:基于Simulink的遗传算法优化控制仿真模型

通过上述步骤,你可以设计并仿真一个基于Simulink的遗传算法优化控制模型。这种方法适用于许多复杂的优化场景,尤其是当传统方法难以找到最优解时。随着经验的积累,你可以进一步优化遗传算法的参数设置,或者结合其他智能优化技术(如粒子群优化、差分进化等)提升优化性能。

MHD0815的博客 208

《算法导论》第 17 章 - 摊还分析

本文介绍了算法分析中的摊还分析技术,重点讲解了三种主要方法:聚合分析、核算法和势能法。摊还分析通过计算操作序列的平均代价,而非单个操作的最坏情况,更准确地评估数据结构的性能。文章结合栈操作、二进制计数器和动态表等具体案例,详细阐述了每种方法的分析步骤和实现代码,并证明了动态表插入/删除操作的摊还代价为O(1)。这些方法为分析具有间歇性昂贵操作的数据结构提供了有效工具,对算法设计和性能优化具有重要指导意义。

2302_80961196的博客 1011

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

算法导论 摊还分析

    摊还分析是求一个操作序列所执行的所有操作的平均时间,与平均复杂度不同的是,它不涉及输入概率,它可以保证最坏情况下每个操作的平均性能。    摊还分析(amortized)有三种常用的分析技术,聚合分析(aggregated analysis),核算法(accounting method), 势能法(potential method)。    利用聚合分析,对于所有n,执行一个n操作序列的最...

大道朝天的博客 970

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【数据结构与算法】【摊还分析】摊还分析详解

转载自:https://www.cnblogs.com/dongkuo/p/5824007.html 保存 标签 2018-05-08 www.cnblogs.com/dongkuo/p/5824007.html 摊还分析(1) 摊还分析(amort...

天天向上 Up Up Up (*^▽^*) 2449

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

算法导论 总结索引 | 第四部分 第十七章:摊还分析

聚合分析,核算法,势能法:栈操作,二进制计数器递增;动态表

AsherGu的博客 1093
上一篇: 『数据结构』B树(B-Tree)及其变体 B+树,B*树
下一篇: 整数划分 -- 思考问题背后的数学原理
mbinary
博客等级 码龄9年 39粉丝 77原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值