我正在开发一种算法和数据结构来处理大量二维点上的欧几里得距离查找。
我曾尝试在谷歌学者上对此进行研究,但尚未发现任何结果(可能是因为我不知道这个问题在文献中通常被称为什么)。
这是我考虑过的两种方法:
方法 1:创建带有桶的双向网格。将点插入桶中,保留每个点的桶的引用。在查找距离为 D 的点 P 时,获取它的桶 B 以及其网格正方形的任何角具有(到 B 的距离)< D 的所有桶。最后,枚举所有这些桶中的点并计算到 P 的距离.
方法 2:创建两个列表,每个列表中的所有点都按坐标 (x,y) 之一排序。在查找距离为 D 的点 P 时,执行二进制搜索以在每个列表中找到两个点,以找到点到 P < D 的切比雪夫距离的矩形区域。最后,计算所有这些点到 P 的欧几里得距离
不过,我猜最先进的算法会大大优于这个?对此的任何想法表示赞赏