空间聚类算法

Spacial clustering algorithm

给定一个二维平面上的点集合,我想找到 X 个点的集合,这些点彼此之间的距离在 Y 以内。例如:

8|
7|    a     b
6|
5|       c
4|
3|                    e
2|                  d          
1|
-------------------------
  1 2 3 4 5 6 7 8 9 0 1

abcd 是二维平面上的点。给定点数参数 3 (X) 和距离参数 3 (Y),算法将 return [[a, b, c]]。一些例子:

algorithm(X = 3, Y = 3) returns [[a, b, c]]
algorithm(X = 2, Y = 3) returns [[a, b, c], [d, e]] -- [a, b, c] contains at least two points
algorithm(X = 4, Y = 3) returns [] -- no group of 4 points close enough
algorithm(X = 5, Y = 15) returns [[a, b, c, d, e]]

限制条件:


我尝试过的事情:

只有 800 个点,您可以通过比较每一对来构建图表,然后 运行 Bron--Kerbosch to find maximal cliques. Here's a legit-seeming Javascript implementation of that algorithm: https://github.com/SeregPie/almete.BronKerbosch