给定一个点列表,我想找到 N 个点的所有“集群”。我对集群的定义很松散,可以调整为任何允许最简单的解决方案:它可以是某个大小圆圈内的 N 个点,也可以是彼此相距一定距离内的 N 个点或其他有意义的点。启发式是可以接受的。
其中 N = 2,我们只是在寻找所有靠近在一起的点对,使用 kd 树很容易高效地完成(例如,递归地将空间分成八分圆或其他东西,其中每个区域都是不同的分支树,然后对于每个点,将其与具有相同父级的其他点进行比较(如果靠近区域的边缘,请检查适当的级别数)。我认识到,通过 N=N' 的解决方案进行归纳,我可以通过取不同 N' 解决方案之间的交集来找到 N=N'+1 的解决方案,但这是非常低效的。
任何人都知道一个体面的方法来解决这个问题?