算法导论6:摊还分析,显式与隐式

P258 摊还分析概念

聚合分析,利用它,我们证明对于n,一个n个操作的序列最坏情况下的花费的总时间为T(n),因此,在最坏情况下,每个操作的平均代价(摊还代价)为T(n)/n

举了例子来形容这个概念 1)栈操作 PUSH(s,x) POP(s) MULTIPOP(s,k) 三个函数

2) k位二进制计数器递增

(算法导论书中说的比较晦涩,引申搜索得到的:摊还分析是用来评价程序中的一个操作序列的平均代价,有时可能某个操作的代价特别高,但总体上来看也并非那么糟糕,可以形象的理解为把高代价的操作“分摊”到其他操作上去了,要求的就是均匀分摊后的平均代价。

摊还分析有三种常用的技术;聚合分析,核算法,势能法。)

(引申搜到的例子:表扩张

有个程序,假设这个表只允许插入,当插入数据发现表满了,会自动新建一个表大小为原来的两倍,然后把已有的数据复制过去,再插入,在问题就是要求这个程序的摊还代价。

解答思路:用核算法:假设现在表中有m/2条数据,表大小为m,而且没有信用,那么插一条数据要付出3的代价,为什么?看,1是为了插入时消耗了,1是保存起来作为自己的信用,还有1呢,就是捐赠跟原本就在表中但没有信用的数据,这样,但数据插入了m/2条,一共有m条数据时,这也刚好是表要扩张的时候,表中所有的数据都有1的信用,就可以用来支付扩展表时复制到新表的代价,从而表的大小变成2m,数据刚好又没了信用而且刚好是表大小的一半,这又到回了最初,就好像递归一样,也就是说1条数据支持3代价就可以保证它永远的扩展,摊还代价是3。)

(摊还分析:价格悖论通过经济学的一个案例分析,浅尝辄止地探讨了摊还分析方法论在多个领域可能的思维投影/应用,经济学上似乎有实际应用)

P261 核算法 accounting method

P262 17.3 势能法 势能=势 将势能释放即可用来支付未来操作的代价

P264 17.4动态表

研究这种动态扩张和收缩表的问题,将使用摊还分析证明,虽然插入和删除操作可能会引起扩张或收缩,从而有较高的实际代价,但它们的摊还代价都是O(1)。如何保证动态表中的空闲空间相对于总空间的比例永远不超过一个常量分数

P275 第五部分 高级数据结构 18章 B数(磁盘存储设计)19章可合并堆

20章 van Emde Boas数

21章 用于不相交集合的数据结构

P278 磁盘 平均读取时间8~11ms,有机械的部分 比硅存储高了5个数量级

硅存储常见存取时间50us

P280 B树的高度 B树上所需的磁片存取次数与B树的高度是成正比的

(并不是心里有b数的b数,而是一种多路平衡查找树)

B树包含n个关键字,高度为h,最小度数t

不允许最小度数t=1

(B树感觉上和数据库方面联系紧密,搜索时能搜到相关的)

P282中间关键字 median key

分裂为两个各含t-1个关键字的结点,中间关键字被提升到y的父节点

P283 以沿树单程下行方式向B树插入关键字

P286 从B树中删除关键字

P289 如何让B树操作高效执行,缓存无关算法

该算法可以不用显式地了解存储层次中数据传输规模的情况下高效工作

(引申搜索“显式与隐式”:显式算法基于动力学方程,因此无需迭代;而静态隐式算法基于虚功原理,一般需要迭代计算。使用显式方法,计算成本消耗与单元数量成正比,并且大致与最小单元的尺寸成反比,应用隐式方法,经验表明对于许多问题的计算成本大致与自由度数目的平方成正比,因此如果网格是相对均匀的,随着模型尺寸的增长,显式方法表明比隐式方法更加节省计算成本。

显式算法是建立在i时刻的运动平衡方程,不需要迭代,运算简单但是对步长要求很高,因为其影响精度和稳定性;而隐式算法是建立在i+1时刻的,因此需要迭代,过程复杂些,但是更加精确)

P290 斐波那契堆(一系列有最小堆序的有根树的集合) 可合并堆 可在常数摊还时间内完成

(斐波那契堆(Fibonacci heap)是计算机科学中最小堆有序树的集合。它和二项式堆有类似的性质,但比二项式堆有更好的均摊时间。堆的名字来源于斐波那契数,它常用于分析运行时间。检索时没有看到实际应用。)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/169094.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Clickhouse学习笔记(9)—— 语法优化

ClickHouse 的 SQL 优化规则是基于 RBO(Rule Based Optimization)实现的 官方数据集的使用 为了方便测试CK的语法优化规则,尝试使用官方提供的数据集; 需要使用的数据集是visits_v1和hints_v1: Anonymized Web Analytics Data …

【LeetCode刷题-二分查找】--162.寻找峰值

162.寻找峰值 方法一:寻找最大值 题目保证了nums[i]≠nums[i1],所以数组nums中最大值两侧的元素一定严格小于最大值本身,因此最大值所在的位置就是一个可行的峰值位置 class Solution {public int findPeakElement(int[] nums) {int idx 0…

ubuntu18-recvfrom接收不到广播报文异常分析

目录 前言 一、UDP广播接收程序 二、异常原因分析 总结 前言 在ubuntu18.04系统中,编写udp接收程序发现接收不到广播报文,使用抓包工具tcpdump可以抓取到广播报文,在此对该现象分析解析如下文所示。 一、UDP广播接收程序 UDP广播接收程序如…

win下安卓打包指南

win下安卓打包指南 0、缘起 换了台电脑竟然忘了怎么打包,还好有笔记,用软件打包也挺好,但是我感觉用 命令行 更有操作感,分享下。 1、下载并配置apktool(放在C://Windows无需配置环境变量,需要java环境&…

【Python大数据笔记_day06_Hive】

hive内外表操作 建表语法 create [external] table [if not exists] 表名(字段名 字段类型 , 字段名 字段类型 , ... ) [partitioned by (分区字段名 分区字段类型)] # 分区表固定格式 [clustered by (分桶字段名) into 桶个数 buckets] # 分桶表固定格式 注意: 可以排序[so…

免费3D骨架工具

免费3D骨架工具 : https://posemy.art/ ControlNet 1.1http://www.coloradmin.cn/o/839105.html?actiononClick https://pan.baidu.com/s/1rh39DI9xVbguLO5l7O4pjA yqqe  网盘里的 预处理器/downloads文件夹(包含所有预处理器)直接放在 extensions/sd…

智安网络|探索人机交互的未来:自然语言处理的前沿技术

自然语言处理是人工智能领域中研究人类语言和计算机之间交互的一门学科。它涉及了语言的理解、生成、翻译、分类和摘要等多个方面。随着人们对自然语言处理的重视和需求不断增长,成为了热门的研究方向。 首先,我们需要了解自然语言处理的基本概念。自然…

使用MVS-GaN HEMT紧凑模型促进基于GaN的射频和高电压电路设计

标题:Facilitation of GaN-Based RF- and HV-Circuit Designs Using MVS-GaN HEMT Compact Model 来源:IEEE TRANSACTIONS ON ELECTRON DEVICES(19年) 摘要—本文阐述了基于物理的紧凑器件模型在研究器件行为细微差异对电路和系统…

SpringBoot集成easyexcel实现动态模板导出

添加依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.3.2</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-o…

Vue23组件自定义事件 和 解绑事件

Vue2&3组件自定义事件 和 解绑事件 Vue2组件自定义事件 功能&#xff1a;父组件绑定数据&#xff0c;子组件触发事件。&#xff08;父绑子触发&#xff09; 实现步骤&#xff08;前三步在父组件实现&#xff0c;第四步在子组件实现&#xff09;&#xff1a; 第一步&#…

scss 实用教程

变量 $ 定义变量 $link-color: blue;变量名可以与css中的属性名和选择器名称相同 使用变量 a {color: $link_color; }$highlight-border: 1px solid $link_color;中划线和下划线相互兼容&#xff0c;即中划线声明的变量可以使用下划线的方式引用&#xff0c;反之亦然。 $li…

find和grep命令的简单使用

find和grep命令的简单使用 一、find例子--不同条件查找 二、grep正则表达式的简单说明例子--简单文本查找例子--结合管道进行查找 一、find find 命令在指定的目录下查找对应的文件。 find [path] [expression]● path 是要查找的目录路径&#xff0c;可以是一个目录或文件名…