我正在开发一种算法和数据结构,以处理大量二维点的欧几里德距离查找。
我尝试在Google学术中研究过这个问题,但还没有找到有用的信息(可能是因为我不知道这个问题在文献中通常被称为什么)。
这是我考虑过的两种方法:
方法1:创建一个具有bucket的二维网格。将点插入到bucket中,并保留每个点桶的引用。 在使用距离D查找点P时,获取其桶B以及任何一个角落到B的距离小于D的所有桶。 最后,枚举所有这些桶中的点并计算到P的距离。
方法2:创建两个列表,每个列表按其中一个坐标(x,y)排序所有点。在使用距离D查找点P时,执行二分查找以找到每个列表中的两个点,以便找到点的切比雪夫距离到P < D的矩形区域。 最后,计算所有这些点到P的欧几里得距离。
我猜现代算法会远远优于这个,但对此的任何想法都被赞赏。
我尝试在Google学术中研究过这个问题,但还没有找到有用的信息(可能是因为我不知道这个问题在文献中通常被称为什么)。
这是我考虑过的两种方法:
方法1:创建一个具有bucket的二维网格。将点插入到bucket中,并保留每个点桶的引用。 在使用距离D查找点P时,获取其桶B以及任何一个角落到B的距离小于D的所有桶。 最后,枚举所有这些桶中的点并计算到P的距离。
方法2:创建两个列表,每个列表按其中一个坐标(x,y)排序所有点。在使用距离D查找点P时,执行二分查找以找到每个列表中的两个点,以便找到点的切比雪夫距离到P < D的矩形区域。 最后,计算所有这些点到P的欧几里得距离。
我猜现代算法会远远优于这个,但对此的任何想法都被赞赏。