这是我的其他帖子的后续问题。
Algorithm for clustering with size constraints
我正在研究一种聚类算法, 在一些重新复制之后,现在我有了这一组点,它们都没有在它们的最佳簇中但是不能单独重新分配,因为它违反了约束。
我尝试使用图形结构来解决问题但遇到了一些实施问题。
我是初学者,如果我错了,请告诉我。
Per @ Kittsil的回答
构建一个以簇为节点的有向图,这样如果全局解将被A中的某个点移动到B,则边缘(A,B)存在。在此图中查找周期将允许您找到潜力移动(移动包括移动循环中的每个顶点)。
我修改了图表,增加了权重,作为从A到B的点数之和。
以下是一些我不确定如何决定重新分配的情况。
场景1 。对于如下的循环。有两个点可以从A移动到B,三个从B移动到C.在这种情况下,我应该选择哪一点重新分配?
场景2 。对于如下的循环。让所有边权重为1.对于集群A中的点,可以将其重新分配给集群B或D.在这种情况下。我应该如何进行重新分配?
场景3 与场景2类似。让所有边权重为1.在较大周期中有两个小周期。群集A中的点可以重新分配给B和E,在这种情况下如何决定重新分配?
欢迎任何一种情况的想法!
考虑到上述情况,还有关于实施算法的任何建议吗?使用伪代码更好。谢谢!
答案 0 :(得分:1)
如果边缘权重与通过重新组合点获得的益处成比例,那么一个不错的启发式方法是选择具有最高总重量的循环。我认为这可以解决你所有的三种情况:只要你有选择,就选择能做得最好的那种情况。
<强>讨论:强>
Algorithm for clustering with size constraints中描述的算法是一种贪婪算法,用于查找局部最小值。因此,无论您在这些情况下如何选择,都无法保证找到最佳解决方案,任何选择都会让您更接近当地最低标准。
由于与约束排序的类似问题的关系,我的直觉是最小的问题将是NP难的。如果不是这种情况,那么存在比我之前描述的算法好得多的算法。但是,这种贪心算法似乎是解决最小问题的快速解决方案。