1

簇
(来源:hiveworkshop.com

在上图中,我将 20 个任意点分成 5 个簇。右边是一个定义最大集群大小的圆圈。右上角是每个集群的最大点数。我希望能够获取任意一组点 k 并将它们分成最大大小为 n 且最大半径为 r 的集群。我需要该算法来检索尽可能多集群(在上面的示例中,尽可能多的 4 个集群)。任何给定点只能属于 1 个集群,并且集群不能重叠。

如果该算法可以向现有集合添加/删除点并更新集群,这也会很有帮助。

我完全不知道如何做到这一点。到目前为止,我最好的想法是计算点集的中心,然后使用这些中心进行二进制空间分区,但我希望使用这种方法的最好结果是均匀分布的集群。

任何帮助,将不胜感激 :)。

编辑
不要重叠,因为区域形成的形状不与其他区域形成的形状相交,并且区域不位于其他区域的内部(例如圆圈中的圆圈)。在上图中,每个区域都有一个形状。这些形状都没有相交,并且没有区域位于另一个区域内。

4

0 回答 0