Data structures 用于快速时间间隔查找的数据结构

Data structures 用于快速时间间隔查找的数据结构,data-structures,Data Structures,我有一组时间间隔,单位为=(an,bn)。我需要在给定时间t的情况下运行大量查找,并需要快速返回包含t的间隔,例如,这些间隔使得这基本上是一个空间分区问题。你有一个很大的空间,里面有容器和一个特定的点,它接触到什么容器?很多游戏都要解决这个问题,所以从这里开始不是个坏主意。查找有关“宽相位碰撞检测”的文章 最简单的方法是将数字空间划分为固定数量的片段。每一块都知道哪些集合与其相交,这是在添加新集合时计算的。现在,当你有一个点时,你不需要测试每一个集合,你只需要检查该点所在工件中包含的集合 另一种

我有一组时间间隔,单位为=(an,bn)。我需要在给定时间t的情况下运行大量查找,并需要快速返回包含t的间隔,例如,这些间隔使得这基本上是一个空间分区问题。你有一个很大的空间,里面有容器和一个特定的点,它接触到什么容器?很多游戏都要解决这个问题,所以从这里开始不是个坏主意。查找有关“宽相位碰撞检测”的文章

最简单的方法是将数字空间划分为固定数量的片段。每一块都知道哪些集合与其相交,这是在添加新集合时计算的。现在,当你有一个点时,你不需要测试每一个集合,你只需要检查该点所在工件中包含的集合


另一种通用而有效的算法是二进制空间划分。此算法将空间细分为两个面。每一方都知道哪些集合与它相交。你可以递归地重复这个过程到你想要的精度(尽管创建一个小于最小集合范围的细分是没有意义的)。

你的问题只是一维的,所以它比大多数游戏中的空间划分问题要简单一些。 您可以只使用一个简单的BST,并在每个叶中记住叶左侧的间隔列表


如果有间隔A(0,10)和B(5,15),那么树的叶子将是(0,带空列表),(5,带A),(10,带A,B)和(15,带B)。

你要找的是A(这是一种类型的)

与其他树结构(例如RB树)一样,它们具有对数查找时间,因此您应该可以看到与使用Java树映射或STL映射类似的性能

  • 来自麻省理工学院
  • 房间里有一个房间
  • 这里有一个

欢迎您查看解决此问题的方法


ID/.P>有一个C++实现的一个区间树,从链接中链接的不再工作了。java解决方案:谢谢链接。我知道这个答案已经发布很久了,所以我为我的评论和问题提前道歉。在我检查之前,这个项目的一个单元测试没有通过:两个非intersectingintervalwithcommonintervalthattintersecboth()。由于这个失败的测试,我想知道lib是否可靠。你对这个库有什么反馈吗?