点阵列中两点之间的最小欧几里得距离

时间:2020-10-15 20:07:18

标签: algorithm geometry

显而易见的O(N ^ 2)是计算每对点之间的欧几里得距离。我已经在Python中实现(省略了calc_euclidean_dist()实现):

def closestPointPair(pairs):

    min_dist = sys.maxsize

    for i in range(len(pairs)):
        for j in range(i+1, len(pairs)):
            dist = calc_euclidean_dist(pairs[i], pairs[j])
            if dist < min_dist:
                min_dist = dist

    return min_dist

有更好的解决方案吗?也许要点积分?

1 个答案:

答案 0 :(得分:2)

最近的点对问题具有众所周知的解决方案(如@dxiv所指出)。 https://en.wikipedia.org/wiki/Closest_pair_of_points_problem

在最坏的情况下,它的时间复杂度为O(N log N),并且实现起来并不难。

相关问题