我遇到的问题是高维间隔树可能会有所帮助。我可以理解一维间隔树是如何工作的。但是,我无法看到应该如何在更高层面实施。
间隔树和范围树
Wikipedia处的解释说明为每个维度使用范围树和间隔树。但是,我无法看到它是如何工作的!对我的解释并不清楚...请检查"更高的尺寸"部分:
首先,构建N维的范围树,允许有效地检索查询区域R内的起点和终点的所有区间。一旦找到相应的范围,唯一剩下的就是那些包围了某个方面的区域。
如果范围树更有效,为什么我们需要间隔树?
转到Range Trees,我们可以看到它是针对一个区间内的查询点而做的(树不存储间隔)。因此,我假设维基百科意味着:
首先,构建N维的范围树,允许有效检索查询区域R内具有起始OR端点的所有区间。
然后..什么?如果我从这一点为每个维度创建一个间隔树,即使原始对象不与我的查询相交,这些间隔中的任何一个都将位于我的搜索框上。请检查以下图片,以试图想象我在说什么。
也许,对我来说不清楚的是:如何跨越两个间隔树的间隔结果以确保它位于实体上?
在这种情况下,有人可以解释如何使用范围树吗?
R树
提一下,我知道R Tree的存在。但我想首先了解高维的间隔树。而且,就像一张纸条一样,他们在Wikipedia说:
间隔树 - 一维的退化R树(通常是时间)。
我强烈不同意。否则,为什么我们应该谈论高维间隔树?如果我理解这两种方法:
R Tree使用MBR对实体进行分组,而Interval Tree使用点。
R Tree可以存储任何类型的空间实体,而Interval Tree只存储间隔。
R Tree需要不时地拆分节点,这看起来很昂贵。间隔树永远不会拆分节点。