在数据处理的情况下,R *树被定义为为索引空间信息而实现的R树的变体。
R *树比标准R树的建造成本稍高,因为可能需要重新插入数据。但是生成的树通常具有更好的查询性能。与标准R树相同,它可以存储点和空间数据。R *树的概念由Norbert Beckmann,Hans-Peter Kriegel,Ralf Schneider和Bernhard Seeger于1990年提出。
R * -Tree通过重复插入来构造。该树几乎没有重叠(即几乎没有重叠),因此查询性能良好。覆盖和重叠的最小化对于R树的性能非常重要。在数据插入或查询时,重叠的含义是需要扩展树的一个以上分支(由于将数据划分在可能重叠的区域中的方式)。最小化的覆盖范围可增强修剪性能,从而允许将整个页面频繁排除在搜索范围之外,尤其是对于负范围查询而言。R * -tree尝试减少两者,既实现了修订后的节点拆分算法的集合,又实现了在节点溢出时强制重新插入的概念。该概念基于以下观察结果:R树结构很容易受到其条目插入顺序的影响,因此,插入构建(而非批量加载)的结构可能不是最优的。条目的删除和重新插入使他们可以“找到”树中比实际位置更合适的位置。
R *树实现与用于查询和删除操作的常规R树类似的算法。
插入时,R *树将实施组合策略。对于叶节点,重叠最小化,而对于内部节点,扩大和面积最小化。
分割时,R *树实现拓扑分割,该拓扑根据周长选择分割轴,然后使重叠最小化。
除了增强的拆分策略外,R *树还尝试通过将对象和子树重新插入到树中来跳过拆分,这受到平衡B树的概念的启发。
因此,最坏情况的查询和删除复杂度类似于R-Tree。R *树的插入策略的O(M log M)比R树的线性拆分策略(O(M))更复杂,但比二次拆分策略(O(M 2))复杂。)用于M个对象的页面大小,并且对总复杂度影响很小。总插入复杂度仍可与R树媲美:重新插入会影响树的最大一个分支,因此会影响O(log n)重新插入,这与对常规R树执行除法相当。因此,总的来说,R *树的复杂性与常规R树的相似。
我正在尝试将一个旧的个人Java项目转换为Rust,作为一种学习体验。基本数据结构如下所示: 有一个主要的。有作者列表和书籍列表 每个作者都有一份他/她写过的书的清单 每本书都有作者的参考资料 在Java程序中,我决定程序中的每本书(“霍比特人”)不应该存在多个对象。如果一本新书(可能通过用户输入)进入系统,我要做的第一件事是测试它是否已经在,然后用
主要内容:树的结点,子树和空树,结点的度和层次,有序树和无序树,森林,树的表示方法,总结之前介绍的所有的 数据结构都是 线性存储结构。本章所介绍的树结构是一种非线性存储结构,存储的是具有“一对多”关系的数据元素的集合。 (A)
本文向大家介绍数据结构中的四叉树,包括了数据结构中的四叉树的使用技巧和注意事项,需要的朋友参考一下 四叉树是被实现以有效地存储二维空间上的点的数据的树。在此树中,每个节点最多具有四个子节点。 我们可以从二维区域构建四叉树,实现以下步骤 当前的二维空间分为四个框。 如果盒子中包含一个或多个点,则构建一个子对象,在其中存储盒子的二维空间。 如果一个盒子不包含任何点,则不要为其建立子对象。 对每个孩子执
到目前为止,我们已经讨论了为了实现文件系统而需要存在于硬盘上的数据结构。 在这里,我们将了解要实现文件系统需要存在于内存中的数据结构。 内存数据结构用于文件系统管理以及通过缓存提高性能。 该信息在安装时间加载并在弹出时丢弃。 1. 内存安装表 内存中安装表包含正在安装到系统的所有设备的列表。 每当连接维护到设备时,其输入将在安装表中完成。 2. 内存目录结构缓存 这是CPU最近访问的目录列表。列表
有多种磁盘数据结构用于实现文件系统。 该结构可能会因操作系统而异。 1. 引导控制块 启动控制块包含从该卷启动操作系统所需的所有信息。 它在UNIX文件系统中被称为引导块。 在NTFS中,它被称为分区引导扇区。 2. 卷控制块 卷控制会阻止有关该音量的所有信息,如块的数量,每个块的大小,分区表,指向空闲块和空闲FCB块的指针。 在UNIX文件系统中,它被称为超级块。 在NTFS中,此信息存储在主文
世间任何文档,都是相似的 如何描述一个文档 抽象的看,任何一个文档都可以下列结构来描述 文档级属性 { # ZDocMetas 标题 作者 子标题 创建日期 指定样式表 … } 标题 # ZDocNode.depth=0 … 一块内容 … # ZDocN