我正在阅读Guttman撰写的论文Link to paper/book
我想知道最近邻查询如何与R-Tree一起工作或如何实际实现。 我想到的是你从根遍历树并检查其中一个条目是否包含查询点。
所以第一个问题是,如果一个矩形包含查询点,这并不意味着该矩形内的所有矩形都将自动最接近查询点。即使查询点不在矩形内,也可能有另一个距离较短的矩形?
其次,假设查询点实际上是最小的bouding框,例如iframe
,我想要所有与此区域重叠的矩形或更好的所有矩形,其中心位于给定区域内。这也可能吗?
答案 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等人的算法通过删除某些检查来改进以前的算法,这些检查旨在在遍历它们之前排除更多的子节点。他们可以证明额外的检查不可能排除节点。