R树中的最近邻算法

时间:2017-08-22 11:40:12

标签: data-structures spatial r-tree

我正在阅读Guttman撰写的论文Link to paper/book

我想知道最近邻查询如何与R-Tree一起工作或如何实际实现。 我想到的是你从根遍历树并检查其中一个条目是否包含查询点。

所以第一个问题是,如果一个矩形包含查询点,这并不意味着该矩形内的所有矩形都将自动最接近查询点。即使查询点不在矩形内,也可能有另一个距离较短的矩形?

其次,假设查询点实际上是最小的bouding框,例如iframe,我想要所有与此区域重叠的矩形或更好的所有矩形,其中心位于给定区域内。这也可能吗?

2 个答案:

答案 0 :(得分:2)

有很多关于在R树中寻找最近邻居的论文。

Roussopoulos,Nick,Stephen Kelley和FrédéricVincent。 “最近邻居查询。” ACM sigmod记录。卷。 24. No. 2. ACM,1995。

Papadopoulos,Apostolos和Yannis Manolopoulos。 “R树中最近邻查询的性能。”数据库理论-ICDT'97(1997):394-408。

Hjaltason,GísliR。和Hanan Samet。 “在空间数据库中进行远程浏览。” ACM数据库系统事务(TODS)24.2(1999):265-318。

张,King Lum和Ada Wai-Chee Fu。 “在R树上增强了最近邻搜索。” ACM SIGMOD Record 27.3(1998):16-21。

Berchtold,S.,Böhm,C.,Keim,D。A.,& Kriegel,H。P.(1997,May)。高维数据空间中最近邻搜索的成本模型。在第十六届ACM SIGACT-SIGMOD-SIGART数据库系统原理专题讨论会上(第78-86页)。 ACM。

答案 1 :(得分:2)

编辑

通过

进行大量实验,算法

Hjaltason,GísliR。和Hanan Samet。 “在空间数据库中进行远程浏览。” ACM数据库系统事务(TODS)24.2(1999):265-318。

(正如@ Anony-Mousse的回答中所述)明显优于我在此描述的算法。

OLD ANSWER:

据我所知,最好的kNN搜索算法是

张,King Lum和Ada Wai-Chee Fu。 “在R树上增强了最近邻搜索。” ACM SIGMOD Record 27.3(1998):16-21。 (复制自@ Anony-Mousse的回答)PDF download

基本算法也在this presenation

中解释

如果我没记错的话,它会做以下事情:

  • 遍历树中的所有节点,除非可以根据当前最大已知距离排除它们。
  • 在遍历它们之前订购候选子节点,以便首先遍历“最近”的子节点。

因此,该算法可以非常快速地找到最近的邻居,并且几乎不会遍历不包含最终结果的节点(如果有的话)。

有趣的是,Cheung等人的算法通过删除某些检查来改进以前的算法,这些检查旨在在遍历它们之前排除更多的子节点。他们可以证明额外的检查不可能排除节点。