用于数据密集型Python程序的简洁/紧凑/压缩的数据结构

2020-07-15 04:16:58

支持最多2^64位的位数组的未压缩位序列";上的节省空间的高性能排名和选择结构。这是一种数据结构,它赋予Python的位数组数据结构以下操作:

RANK(i:int)->;int:第i个位置左侧(包括第i个位置)的一位数。

RANK_ZERO(i:int)->;int:第i个位置左侧(包括第i个位置)的零位数。

SELECT(BIT_RANK:INT)->;int:秩为BIT_RANK的位数组中最左边的位的索引。

SELECT_ZERO(BIT_RANK_ZERO:INT)->;int:位数组中RANK_ZERO为BIT_RANK的最左侧位的索引。SELECT_ZERO的当前实现不如SELECT的实现高效,因为它在RANK_ZERO上使用二进制搜索,而不是使用复杂的数据结构。这在未来可能会改变。

自然数列单调的Elias-Fano表示。使用这种编码,一个元素占用由2加上平均间隙(源)的对数限制的位数。对于表示单调递增的自然数列表来说,这可以是一个很好的数据结构。应用程序包括倒排索引、指向大型数组的指针等。有关更多信息,请参阅此博客文章。

关于BARBAY和Navarro的压缩排列和自适应排序,这对于在内存中维护大量排列,同时允许高效的反向查找非常有用。当排列由许多递增的值运行组成时,此数据结构最有用。

二叉树拓扑的OOD表示,使用(理论上)略多于两位的每个树节点,同时提供高效的树导航。

或者,您可以通过克隆此repo并运行提供的setup.sh脚本,从源代码安装简明。

这个项目是由俄亥俄州数学和信息学研究所实现的。作者感谢Root保险公司每年为工程师提供12天的工作时间,让他们从事这样的项目。