当前位置: 首页 > news >正文

浅谈 fhq-treap —— 或是 Splay 的不二选择?

本文章同步发布至 浅谈 fhq-treap —— 或是 Splay 的不二选择?

一、从 BST 谈起

BST 的意思是二叉搜索树,它满足对于所有子树的根节点 \(x\),满足 \(v_{rson} > v_x > v_{lson}\),也就是说,它的中序遍历为一个有序的序列。

这就是一个 BST,其的中序遍历为 1 3 4 5 6 7 8

BST 的实现很简单,但由于它的结构不稳定,如上面两张图都是同一个中序遍历,所以会被构造数据卡到 \(O(n)\),但随机数据下仍然为 \(O(\log_2n)\)

二、关于 treap

treap 上的每一个点有两个值:权值和键值。

  • 权值:我们采用 BST 进行维护,使得 \(v_{rson} > v_x > v_{lson}\)
  • 键值:我们随机化键值,然后采用小根堆维护键值,使得 \(g_x < g_{lson},g_{rson}\)

为什么这棵树的结构是一定的?我们发现 treap 的根节点的键值一定最小,也就是我们的根节点确定了。

此时我们左右两棵子树的权值范围确定了,再根据键值的限制,左右儿子也会确定下来,同理,这颗树也会确定下来。

确定好结构后,我们的 treap 就很好实现了,treap 分为有旋和无旋两种,有旋就是 Splay 等,这里我们将以 fhq-treap 代表的无旋树。

二-ex、关于复杂度

对于权值我们是无法控制的,但对于键值,根据随机化我们的 Heap 高度是 \(\log_2n\),也就是这颗树的高度被 Heap 所限,为 \(\log_2n\),此时的操作复杂度就为 \(O(\log_2n)\)

三、分裂与合并

fhq-treap 的优点是编写简单,可以实现很多操作,但缺点是需要利用多次分裂与合并操作来进行维护,常数大。

1.分裂

我们的分裂操作是将权值小于等于 \(x\) 的树从原树上分裂下来,将一颗 \([l,r]\) 范围内的树变为 \([l,x]\)\([x+1,r]\),将一颗 treap 分裂为两颗 treap。

由于 treap 的性质,我们发现分裂后的两颗 treap 的结构也是一定的!

我们来思考如何分裂:

  1. 对于一棵以 \(u\) 为根的子树,根据 BST 的特点,我们发现若 \(u\) 的左儿子 \(u_{lson}\) 权值 \(val \le x\),那么它的左子树一定也小于 x,此时我们可以把这颗树先分离出来(以 \(x \le 5\) 为例):

  2. 对于右子树的操作和左子树一样,但是对于右儿子的权值 \(\le x\),我们只将右儿子与其的左子树加入新树,而右儿子的右子树需要再次递归判断。

  3. 对于左儿子的权值 \(\ge x\),我们需要递归它左儿子的左子树,对于右儿子也一样。

http://www.jsqmd.com/news/44885/

相关文章:

  • vba 处理特定段落前的表观空行中的分页符
  • 人工智能之编程进阶 Python高级:第六章 文件类模块
  • PQ v.Next Alpha阶段发布
  • 国产数据库替代MongoDB的技术实践过程:金仓多模数据库在电子证照框架中的深度应用
  • 三分稀疏图染色的多项式时间证明
  • 251119
  • 实用指南:分布式架构未来趋势:从云原生到智能边缘的演进之路
  • 人工智能之编程进阶 Python高级:第七章 数据库类模块
  • linux for 跳出循环
  • 用USB BLASTER II 下载sof文件没有问题,debug波形也没有问题。但是下载jic问题异常?
  • Linux用户管理相关知识
  • AI浪潮下的机遇与挑战:从巨头动态看未来趋势
  • CCF GESP 五级真题考频与知识点速查表
  • 推迟win11更新137年的方法
  • linux for 死循环
  • 注册表禁用/启用Windows系统更新
  • Linux for OneNote
  • linux for in seq
  • 高级程序语言设计第6次
  • 深入解析:Flink 实验性特性把“已预分区”的 DataStream 重新解释为 KeyedStream
  • 用最纯粹的白话,解析 AI Memory
  • 2025苏州代理记账口碑榜:3 家靠谱机构/公司出圈,财税服务选对不踩坑!
  • 完整教程:电脑控制DFPlayer Mini MP3播放音乐
  • 2025-11-19 早报新闻
  • 2025密炼机厂家实力榜:大连华韩领衔 四大品牌凭技术与口碑领跑橡塑机械行业
  • 2025矿物铸件厂家推荐排行榜:头部企业实力领跑,四星厂商凭细分优势站稳脚跟
  • 2025有限元分析/计算/测试服务商口碑榜:长春六耳科技领跑,技术深耕者成行业标杆
  • 详细介绍:Micro框架API文档离线访问:生成静态HTML文件
  • Python 中 pymysql 操作 MySQL 数据库实操指南
  • qml021-调试qml-无法连接到进程内(in-process)QML调试器