算法导论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.mzph.cn/news/139310.shtml

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

相关文章

线性规划、整数规划、多元规划、二次规划等规划类问题

介绍 规划问题是数学优化的重要分支,其目的是在一组限制下最大限度地优化目标函数。常见的规划问题包括线性规划、整数规划、多元规划和二次规划。 - 线性规划 (Linear Programming):是将一个线性目标函数与一组线性约束相结合,目标是找到一…

C#中.NET 7.0控制台应用使用LINQtoSQL、LINQtoXML

目录 一、新建控制台应用和数据库连接 二、手动添加System.Data.Linq程序包 三、手动添加System.Data.SqlClient程序包 四、再次操作DataClasses1.dbml 五、示例 1.源码 2.xml文件 默认安装的.NET 7.0控制台应用是不支持使用LINQtoSQL、LINQtoXML的。 默认安装的.NET F…

自动驾驶学习笔记(八)——路线规划

#Apollo开发者# 学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往: 《自动驾驶新人之旅》免费课程—> 传送门 《Apollo Beta宣讲和线下沙龙》免费报名—>传送门 文章目录 前言 路线规划 路由元素 路径搜索 最优…

【安卓13】谷歌原生桌面launcher3源码修改,修改桌面布局(首屏应用、小部件、导航栏、大屏设备任务栏)

前言 近期接到一个关于谷歌EDLA认证的需求,我负责的是谷歌原生桌面布局的修改,通过研究源码,将涉及到了一些修改思路发出来,大家可以参考一下有没有对你有用的信息。主要修改内容有: 1、搜索栏、底部导航栏未居中 2、…

【linux卸载已安装软件的命令】

在Linux系统中,我们可以使用不同的命令来卸载已安装的软件。下面是一些常用的命令和方法: 1. 使用apt-get命令(适用于Debian和Ubuntu系统): - 要卸载一个已安装的软件,可以使用以下命令: sud…

Android 升级软件后清空工厂模式测试进度

Android 升级软件后清空工厂模式测试进度 最近收到项目需求反馈:升级软件后,进入工厂模式测试项,界面显示测试项保留了升级前的测试状态(有成功及失败),需修改升级软件后默认清空测试项测试状态,具体修改参照如下: /…

LangChain应用全解析

一、Langchain基础 1.Langchain简介 (1)替换模型 from langchain.prompts import ChatPromptTemplatechat ChatOpenAI(temperature0) 使用代理ip llm ChatOpenAI(model_name"gpt-3.5-turbo", max_tokens2048, temperature0.5,openai_api_keyapi_key,openai_ap…

论文阅读:PVT v2: Improved Baselines with Pyramid Vision Transformer

来源:PVTv1 和PVTv2 链接:https://arxiv.org/pdf/2102.12122.pdf 链接:https://arxiv.org/pdf/2106.13797.pdf PVTv2是在PVTv1基础上,所以先介绍PVTv1 Pyramid Vision Transformer: A Versatile Backbone for Dense Prediction…

Android13分享热点设置安全性为wpa3

Android13分享热点设置安全性为wpa3 文章目录 Android13分享热点设置安全性为wpa3一、前言热点WPA3加密类型是需要底层硬件支持的。Wifi WPA3 和 热点 WPA3 是不一样的分享初衷 二、代码分析1、应用代码中热点设置WPA3 加密格式报错部分日志信息: 2、系统代码分析&a…

windows上运行yolov3代码详解(小白)

batch_normalize1 # 是否做BN 代码链接 环境配置 没有Anaconda的话可以安装下 首先创建虚拟环境,名称随意,版本3.9.我觉得挺好的 激活虚拟环境 conda activate 刚刚创建的环境名称 切换到requirements.txt目录下,直接vscode打开yolov3文件…

【操作系统面试题(32道)与面试Linux命令大全】

文章目录 操作系统面试题引论1.什么是操作系统?2.操作系统主要有哪些功能? 操作系统结构3.什么是内核?4.什么是用户态和内核态?5.用户态和内核态是如何切换的? 进程和线程6.并行和并发有什么区别?7.什么是进…

ThinkPHP图片处理之压缩图片大小,图片处理之图片水印(添加平铺文字水印,并设置文字之间的间距和文字的角度)

安装扩展 使用Composer安装图像处理类库 composer require topthink/think-image在对应的控制器内引入Image use think\Image;图片处理之压缩图片大小 public function upload(){$file request()->file(image);// 将前端传过来的图片移动到项目目录下$info $file->…

Redis学习笔记13:基于spring data redis及lua脚本list列表实现环形结构案例

工作过程中需要用到环形结构,确保环上的各个节点数据唯一,如果有新的不同数据到来,则将最早入环的数据移除,每次访问环形结构都自动刷新有效期;可以基于lua 的列表list结构来实现这一功能,lua脚本可以节省网…

idea怎么配置tomcat

要在IntelliJ IDEA中配置Tomcat,请按照以下步骤操作: 打开IntelliJ IDEA,点击File -> Settings(或者使用快捷键CtrlAltS)。 在设置窗口左侧导航栏中,选择Build, Execution, Deployment -> Applicati…

Redis的持久化机制和配置

Redis 的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制。 Redis 的持久化机制有两种,第一种是RDB快照,第二…

web前端开发第4次Dreamweave课堂练习/html练习代码《出版界推出一批纪念抗美援朝胜利70周年主题图书》

目标图片: 文字素材: 出版界推出一批纪念抗美援朝胜利70周年主题图书 2023-08-01来源:新华社 为纪念抗美援朝战争胜利70周年,出版界集中推出了“抗美援朝亲历记丛书”《新中国立国之战——抗美援朝战争的回顾与思考》《毛泽东与…

C 语言 goto 语句

C 语言 goto 语句 在本教程中,您将学习在C语言编程中创建goto语句。此外,您还将学习何时使用goto语句以及何时不使用它。 goto语句使我们可以将程序的控制权转移到指定的label 标签。 goto语句的语法 goto label; ... .. ... ... .. ... label: sta…

发布一款将APM日志转换为Excel的开源工具

这几年有不少朋友向我咨询如何将APM日志转换为Excel,我之前的答复是先将日志转换为MATLAB的格式,然后用MATLAB导出为Excel。但是实际上不是每个人都会用MATLAB,并且处理数据也不是非要用MATLAB,更不是说用MATLAB了就显得专业、显得…

Leetcode—2471.逐层排序二叉树所需的最少操作数目【中等】(置换环解法!)

2023每日刷题(二十七) Leetcode—2471.逐层排序二叉树所需的最少操作数目 置换环解题思想 参考自网络 总交换次数 每一层最小交换次数之和 每一层元素个数 - 置换环数 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* …

docker通过nginx代理tomcat-域名重定向

通过昨天的调试,今天做这个域名就简单了, 正常我们访问网站一般都是通过域名比如,www.baidu.com对吧,有人也通过ip,那么这个怎么做呢?物理机windows可以通过域名访问虚拟机linux的nginx代理转向tomcat服务…