首页 > 其他分享 >可持久化数据结构 理论

可持久化数据结构 理论

时间:2022-10-28 10:37:24浏览次数:61  
标签:持久 理论 编程 Persistent 版本 操作 数据结构


一、可持久化数据结构简介

可持久化数据结构(Persistent data structure)总是可以保留每一个历史版本,并且支持操作的不可改变性(immutable)。

二、可持久化分类

1.部分可持久化 (Partially Persistent)

所有的版本均可访问,但是只有最新版本可以修改

2.完全可持久化 (Fully Persistent)

所有版本均可即访问又修改。

若支持将两个历史版本合并,则又称为汇合可持久化 (Confluently Persistent)

三、实际应用

1.几何计算

在几何计算中有许多离线算法,例如悬线扫描法,其基本策略是一次扫描后给出所有询问的回答,在时间复杂度分析相当优秀。但在强迫在线的情况下,每次都要进行一次悬线扫描,询问操作的时间复杂度就从对数时间降为线性。

为了解决时间复杂度上的问题,在这里可以引入可持久化的思维。我们将扫描线的时间轴作为一个变动依据,持久化相关的结构,只要我们能将询问在对数时间内穿梭于这个时间轴,必能动态解决先前的问题。

2.字串处理

为了达到非常高效率的合并操作,防止大量重复性字串的生成伴随的效能退化,使得各方面的操作都能远低于线性操作。如C++中的rope就是一个可持久化的数据结构。不只是字串操作。若处理类型有大量重复操作,均可以考虑将数据结构进行可持久化处理,以达到压缩时间开支的效果。

3.版本回溯

实际上就是对应大部分的应用软体中的redo/undo。如果资料库/操作变动为了高效率操作而会配上复杂的结构(并不像 hash, set 反转操作只需要常数或对数时间),那么为了快速回推变动结果,持久化结构就是要减少 redo/undo 的花费。

资料库本身可以常数回推,纪录变动的部分情况即可。而应用层的计算,大部分实作都是砍掉快取,并且重新计算出一份新的结构,有时候回推的变动大小为 m,为了重新计算结构而消耗了 ,如果

4.函数式编程

函数式编程关心类型(代数结构)之间的关系,命令式编程关心解决问题的步骤

函数式编程需要特别的数据结构以符合语言特性,其中不可变的性质更为重要,以利于并行环境与除错。如面向对象编程的 Java 8 后引入 stream 类,支援写出函数式的语法设计,可提供惰性求值、无限值域等的特殊功能。

四、几种常见的可持久化数据结构

1.可持久化线段树

2.可持久化块状数组

3.可持久化平衡树

4.可持久化字典树

5.可持久化可并堆


标签:持久,理论,编程,Persistent,版本,操作,数据结构
From: https://blog.51cto.com/u_12372287/5803543

相关文章

  • 数据结构 线段树--权值线段树 详解
    ......
  • 数据结构_树状数组 详解
    数据结构_树状数组详解......
  • 2.IOC理论推导
    2.IOC理论推导1.UserDao接口2.userDaoImpl实现类3.userservice业务接口4.UserServiceImpl业务实现类在我们之前的业务中,用户的需求可能会影响我们原来的代码,我们需要......
  • 数据结构(Array)
    数据结构划分存储结构(存储对应的数据的)逻辑结构(逻辑的体现)算法存储结构的相关的内容线性结构(有顺序)数组(顺序表)栈(先进后出)队列(先进先出)非线性结构(没......
  • Redis持久化----RDB
    Redis持久化----RDB原理当采用RDB这种方式来持久化Redis中的数据时,是向RDB文件中写入redis的快照;什么是内存快照:​ 所谓内存快照,就是指内存中的数据在某⼀个时刻的......
  • 数据结构-链表
    链表在需要存储大量的元素时数组可能是最常用的数据结构,但是也存在一定的局限性:数组的大小是固定的,在数组的起点或者中间插入(移除元素)的成本很高,需要移动数组元素。链表是一......
  • 数据结构与算法---二分法 超详细解,保证你能看懂!!!!!
    二分法不难,看完这篇文章,你必懂。假如我们遇到了一道算法题,要求我们从数组A=[a,b,c,d,e]里找到d,那通常我们会逐个遍历,遍历a,b,c,d一共需要对比4个数字才能找到d。那如果使用......
  • 数据结构与算法分析——第七章 排序
    注:发此文谨以记录初学《数据结构与算法分析——C语言描述》的个人理解,希望能够得到宝贵意见与建议。(文中转载有相关文章片段,在学习时帮助理解作用较大,在此对作者表示感谢)7.1......
  • 常见数据结构
    数据结构分类数据结构分为逻辑结构和物理结构。逻辑结构:指数据元素之间逻辑关系的数据结构,这里的逻辑关系是指数据元素之间的前后间关系,与数据在计算机中的存储位置无关......
  • 数据结构 玩转数据结构 4-1 什么是链表
    0课程地址https://coding.imooc.com/lesson/207.html#mid=13429 1重点关注1.1什么是链表数据存在节点中的一种线性数据结构  1.2......