【发布时间】:2010-04-02 22:52:39
【问题描述】:
我正在寻找一种为矩形提供索引的数据结构。我需要插入算法尽可能快,因为矩形将在屏幕上移动(考虑用鼠标将矩形拖动到新位置)。
我研究过 R-Trees、R+Trees、kD-Trees、Quad-Trees 和 B-Trees,但据我了解,插入通常很慢。我更喜欢以亚线性时间复杂度进行插入,所以也许有人可以证明我对列出的数据结构中的任何一个都错了。
我应该能够查询数据结构,以了解哪些矩形在点 (x, y) 或哪些矩形与矩形相交 (x, y, width, height)。
编辑:我之所以这么快插入,是因为如果您想在屏幕上移动一个矩形,则必须将它们删除然后重新插入。
谢谢!
【问题讨论】:
-
也许我遗漏了一些东西,但是你怎么能在亚线性时间内插入呢?仅仅读取每个矩形的坐标已经是 O(n) 操作了。
-
如果“屏幕”的所有对象都有索引(kd、quad、r/trees),则插入必须是
-
如果矩形可以移动的速度有限制,那么询问是否有办法分摊重建过程并不是不合理的。
-
嗯,它们并不总是在移动。假设您用鼠标在屏幕上拖动一个对象。这是“运动”发生的一个很好的例子。
标签: algorithm indexing data-structures spatial-index