给定一组二维点(数量较少)和一个最大距离,找到最小簇的数量,其中每个簇内部的所有点之间的距离都小于或等于最大距离。簇的中心应该是这些点之一。此外,给出每个簇内部的点数。
这似乎类似于k-means等算法,但有了最大距离的限制。我没有看到比测试所有可能性(最大簇数为点数)更好的解决方案。是否有更好的解决方案?
这似乎类似于k-means等算法,但有了最大距离的限制。我没有看到比测试所有可能性(最大簇数为点数)更好的解决方案。是否有更好的解决方案?
U
是你的点集,而集合S
包含|U|
个集合,每个点u
在U
中对应一个这样的集合,其中包含所有在以u
为圆心半径等于你的最大距离的圆内的点。因此,你的问题是找到S
中集合的最小数量(相当于找到应该成为聚类中心的点),使得这些集合的并集为U
。 S
定义为上述内容,然后进行蛮力计算(即尝试 S
的所有可能子集,并取其中具有最小集合数量的子集,导致指数级复杂度与|S|
的大小有关)。关于这种方法,实际上您希望在 S
中有相当少的集合,点的数量并不那么重要。