我正在开发一种算法和数据结构来处理大量二维点上的欧几里德距离查找。地理空间查找
我试过在谷歌学者研究这个,但没有发现任何东西(可能是因为我不知道这个问题通常在文献中被称为什么)。
这是我认为这两种方法:
方法1: 创建一个水桶电网bidimentional。将点插入桶中,保留每个点桶的参考。 查找距离为D的点P,得到它的桶B以及其网格平方的任一角具有的所有桶(到B的距离)< D. 最后,枚举所有这些桶中的点并计算距离至P.
方法2: 创建两个列表,每个列表的所有点都由坐标(x,y)之一排序。在距离为D的点P上查找,执行二进制搜索以在每个列表中找到两个点,以便找到矩形区域,其点的切比雪夫距离为P < D. 最后,计算所有这些点的欧氏距离P
我猜测最先进的算法将大大优于这个,但?在这个任何想法表示赞赏
我没有资格回答这个问题,但这个链接可能有帮助 - 它解释了MongoDB的地理空间索引是如何实现的。 http://www.kchodorow.com/blog/2011/06/08/mongo-in-flatland/ – Rich
你在问[2D会合](http://c2.com/cgi/wiki?TwoDimensionalRendezvous)还是[ 2D范围查询](http://c2.com/cgi/wiki?TwoDimensionalRangeQuery)? –
@DavidCary没有,看起来,尽管它更类似于2D范围查询。这个问题可以概括为“找到与点P的欧氏距离小于D的所有点” – goncalopp