Data structures 需要对简洁的数据结构有一个很好的概述吗 交叉张贴:

Data structures 需要对简洁的数据结构有一个很好的概述吗 交叉张贴:,data-structures,binary-tree,variable-length,large-data,Data Structures,Binary Tree,Variable Length,Large Data,因为我知道,我迫切需要对该领域的最新发展有一个很好的概述 我已经在谷歌上搜索并阅读了很多我可以在谷歌搜索结果顶部看到的文章,这些文章都是根据我的要求写的。我仍然怀疑我错过了一些重要的东西 以下是我特别感兴趣的话题: 二叉树的简洁编码,具有获取父树、左/右子树和子树中元素数的有效操作 这里的主要问题如下:我所知道的所有方法都假设以呼吸一阶枚举的树节点(就像在这一领域的先驱工作Jacobson,G.J(1988)。简洁的静态数据结构),这似乎不适合我的任务。我处理深度优先布局中给定的巨大二叉树,深度

因为我知道,我迫切需要对该领域的最新发展有一个很好的概述

我已经在谷歌上搜索并阅读了很多我可以在谷歌搜索结果顶部看到的文章,这些文章都是根据我的要求写的。我仍然怀疑我错过了一些重要的东西

以下是我特别感兴趣的话题:

  • 二叉树的简洁编码,具有获取父树、左/右子树和子树中元素数的有效操作

    这里的主要问题如下:我所知道的所有方法都假设以呼吸一阶枚举的树节点(就像在这一领域的先驱工作Jacobson,G.J(1988)。简洁的静态数据结构),这似乎不适合我的任务。我处理深度优先布局中给定的巨大二叉树,深度优先节点索引是其他节点属性的关键,因此更改树布局对我来说有一些成本,我希望将其最小化。因此,有兴趣参考其他BF树布局的作品

  • 外部内存中的大型可变长度项数组。数组是不可变的:我不需要添加/删除/编辑项目。唯一的要求是O(1)元素访问时间和尽可能低的开销,比直接的偏移量和大小方法更好。以下是我为我的任务收集的关于典型数据的一些统计数据:

    项目的典型数量——数亿,高达数千万

    大约30%的项目长度不超过1位

    40%-60%的项目长度小于8位

    只有少数项目的长度在32到255位之间(255位是限制)

    平均项目长度~4位+/-1位

    项目长度的任何其他分布在理论上都是可能的,但所有实际有趣的案例的统计数据都接近上述情况

  • 链接到任何复杂的文章,任何晦涩难懂的教程,或多或少有文档记录的C/C++库,-任何在类似任务中对您有用的东西,或者您经过教育的猜测看起来像的东西-所有这些东西都非常感谢

    更新:我忘了在问题1中添加:我正在处理的二叉树是不可变的。我不需要修改它们,我只需要以各种方式遍历它们,总是从节点移动到子节点或父节点,这样这些操作的平均成本是O(1)

    另外,典型的树有数百万个节点,不应该完全存储在RAM中


    如果有人感兴趣,请更新2。我得到了几个很好的链接。

    我知道你有大量的数据,但是有很多方法可以解决这个问题。所以我只是好奇:为什么特别简洁的数据结构?首先,因为它非常紧凑。2每个二叉树节点的比特数远远高于我所知道或能想到的任何其他表示形式。处理该表示的附加O(N*loglog(N)/log(N))位辅助空间很容易负担得起。由于紧凑性,对于处理存储在外部内存中的树来说,使用简洁表示法的所有性能缺陷都与由于更紧凑的表示法而获得的性能增益相当(除非存在严重的局部性问题,如我使用呼吸优先布局的情况)。