用于不相交的整数区间的高效数据结构

时间:2013-03-18 21:31:56

标签: data-structures hash intervals

我有一组不相交的整数区间,想要检查给定的整数是否位于其中一个区间内。当然,这可以通过对数时间的二分搜索来实现。但是,绝大多数查询返回false,即只有极少数整数位于任何区间。为了加速应用程序,我正在寻找概率,常量时间算法(某种哈希函数),它告诉我一个给定的整数是否绝对不是或者可能在一个区间内。以下是预期算法的草图,其中magic_data_structure使用[{1}}中存储的区间进行初始化:

tree

有关文学的任何想法或提示吗?非常感谢您的帮助!

P.S。:是否有人知道非重叠区间的区间树的改进(与上述不同)可能包括其他区间?

1 个答案:

答案 0 :(得分:1)

这是一个天真的解决方案,但不变。

如果你没有处理非常大量的数字,你可以使用一个哈希表,其中键是数字,值是指向它们所在的集合的指针。但当然如果有很多数据可能需要太长时间(以及太多内存)才能以这种方式对其进行索引。

看起来有各种disjoint-set data structures and algorithms来存储/搜索它们,但我怀疑它们中是否有任何时间存在。