What is the fastest algorithm to calculate the minimum distance between two sets of points?
Asked Answered
R

3

20

I want to find the minimum distance between two polygons with million number of vertices(not the minimum distance between their vertices). I have to find the minimum of shortest distance between each vertex of first shape with all of the vertices of the other one. Something like the Hausdorff Distance, but I need the minimum instead of the maximum.

Remiss answered 13/9, 2010 at 13:44 Comment(5)
Could you update your question to mention that polygons may have millions of points, and whether they are convex/concave, and whether they can overlap.Zane
Yeah, the polygons have millions of points and they are non-convex. Actually an algorithm which works for two sets of points is preferred more.Remiss
the minimum distance between two polyogns is not always the minimum distance between the verticies in each polygon. which do you really wantGrouping
You are right. Sometimes, the minimum distance is between a vertex and a segment. But it cannot be between two segments. By the way, the most naive algorithm to find this is checking each vertex with the other polygon and doing it for both polygons.Remiss
Please ensure coherence between the title and the question.Roseola
M
25

Perhaps you should check out (PDF warning! Also note that, for some reason, the order of the pages is reversed) "Optimal Algorithms for Computing the Minimum Distance Between Two Finite Planar Sets" by Toussaint and Bhattacharya:

It is shown in this paper that the minimum distance between two finite planar sets if [sic] n points can be computed in O(n log n) worst-case running time and that this is optimal to within a constant factor. Furthermore, when the sets form a convex polygon this complexity can be reduced to O(n).

If the two polygons are crossing convex ones, perhaps you should also check out (PDF warning! Again, the order of the pages is reversed) "An Optimal Algorithm for Computing the Minimum Vertex Distance Between Two Crossing Convex Polygons" by Toussaint:

Let P = {p1, p2,..., pm} and Q = {q1, q2,..., qn} be two intersecting polygons whose vertices are specified by their cartesian coordinates in order. An optimal O(m + n) algorithm is presented for computing the minimum euclidean distance between a vertex pi in P and a vertex qj in Q.

Marcelline answered 13/9, 2010 at 15:29 Comment(0)
E
2

There is a simple algorithm that uses Minkowski Addition that allows calculating min-distance of two convex polygonal shapes and runs in O(n + m).
Links:
algoWiki, boost.org, neerc.ifmo.ru (in russian).

If Minkowski subtraction of two convex polygons covers (0, 0), then they intersect

Enugu answered 4/7, 2021 at 16:6 Comment(7)
Great, but how does this answer What is the fastest algorithm to calculate the minimum distance between two sets of points? Moreover the polygons [are] non-convex.Gastongastralgia
It's unclear to me how Minkowski sum relates to distance between polygons.Via
@Via Lets say, A first set of points, B second, B' is B inverted relatively to (0, 0); dist(A, B) = min of |a - b| (where a ∈ A, b ∈ B) = min of |a + b| (where a ∈ A, b ∈ B') = min of |c| (where c ∈ (A + B')); A + B' can be found using Minkowski sum;Enugu
What does "inverted relatively to (0, 0)" mean?Via
I realize though that this question is concerned with minimal distances between points, not points and edges, that was my confusion.Via
In my comment inverted relatively (0,0) means that coordinates of given point are multiplied by -1.Enugu
Thanks @oarfish. Yes the problem is about points but I knowing this is so helpful and educative.Remiss
H
0

I would pose this a bipartite graph matching problem. There is a nice library in python called networkx to solve this matching efficiently. Hope this helps!

Heroine answered 24/2, 2023 at 18:12 Comment(1)
Nothing to do with bipartite matchingConquistador

© 2022 - 2024 — McMap. All rights reserved.