树搜索如何处理最近邻搜索中的边缘错误?

时间:2014-12-04 23:53:46

标签: search nearest-neighbor quadtree r-tree

关于树搜索算法,特别是四叉树和r树,它们在找到最近邻居时如何解释边缘错误。我不善于用文字解释这个,所以我拍了一些照片。

对于图片,找到最近邻居的输入坐标是绿色,我认为最终会找到"找到"最近的邻居是红色的。实际的最近邻居是蓝色。

quadtree example

在这个四叉树中,只用那一个红点搜索蓝色的右下象限,而实际上,输入坐标(绿色)非常接近边缘,它实际上更接近于蓝点。

与R树类似,如果坐标在一个矩形内但距离边缘很近,则它更接近另一个矩形中的点,如下图所示,其中白点给定坐标:

rtree example

它完全在红色框内,但更接近洋红色框中的一个点。

2 个答案:

答案 0 :(得分:1)

在这两种情况下,都需要在元素之间进行细粒度距离检查 - 方框或分区只是帮助找到真正距离检查的候选者。

一种看待它的方法是,使用方框告诉你不要检查什么。如果整个盒子比你已经知道的东西更远,你不需要检查那个盒子里的任何东西。如果某些方框关闭,请更好地检查其中的元素。

答案 1 :(得分:0)

如果您懒得阅读R-tree出版物......

它使用查询点到相邻网页的最小距离

如果mindist(query, rectangle) <= dist(query, known neighbor)那么搜索需要在另一个矩形中继续,因为那里可能有更好的邻居。

它实际上非常简单,应该在任何有关R树和类似索引的书中进行解释。