I have a quick question that I haven’t found out how to do efficiently (in C#).
I have a list array of Points (X,Y). I need to find which 3 points are the tightest cluster. It’s for a mapping project.
What would the best way to do this be? There’s only about 6 to 9 items in the list.
Thanks in advance.
Cheers!
For such small numbers, the brute force method should work just fine. With six points, there are 20 possible combinations of three points. With 9 points, there are 84 possible combinations. I wouldn’t recommend this approach for a lot of points, but with just a handful, it’s going to be plenty fast enough and it’s dead simple to write.
You can easily generate the combinations:
You’ll need a structure to hold your combinations:
If you create one of those structures for each group and store them in an array, you can simply sort the array and take the best three.
Your bigger problem is coming up with a definition of “tight group.” Also, you have to decide if a point can be in more than one of those “tightest” groups. Three possible ways to define tightness are:
Undoubtedly there are more.