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