我必须解决的问题是stabbing queries的1D问题的4D版本:查找数字属于哪个区间。我正在寻找multi-dimensional segment trees的实施。理想情况下,它将使用Java,它将使用fractional cascading。
kd-trees(k-NN搜索)和范围树(给定边界框,查找其中的所有点)存在多维实现,但对于分段树,我只发现了1D实现。
我很乐意考虑具有类似空间/时间复杂度的其他数据结构来解决同样的问题。
答案 0 :(得分:0)
为了扩展我的评论,我想到的二元空间分区算法就是这个。
stabbing查询从根开始,检查分配给当前节点的所有间隔,下降到适当的子节点,然后重复。切换到小子树的暴力可能是值得的。
如果太多的间隔被半平面x = t刺伤,你可以尝试递归(a)与下半空间相交的间隔和(b)与上半空间相交的间隔。这会重复间隔,因此空间要求不再是线性的,您可能必须切换到间隔集合上的暴力,细分证明是无效的。