【问题标题】:Removing cycles in weighted directed graph去除加权有向图中的循环
【发布时间】:2015-07-19 15:15:11
【问题描述】:

这是我其他帖子的后续问题。

Algorithm for clustering with size constraints

我正在研究一种聚类算法, 经过一些重新聚类后,现在我有了这组点,它们都不在最佳聚类中,但不能单独重新分配,因为它会违反约束。

我正在尝试使用图形结构来解决问题,但在实施过程中遇到了一些问题。

我是初学者,如果我错了,请告诉我。

根据@Kittsil 的回答

构建一个以集群为节点的有向图,这样如果全局解决方案将通过 A 移动到 B 中的某个点最小化,则存在边 (A,B)。在此图中查找循环将使您能够找到潜在的移动(移动包括移动循环中的每个顶点)。

我修改了图表,将权重添加为从 A 移动到 B 的点数的总和。

在某些情况下,我不确定如何决定重新分配哪个点。

场景 1。如下循环。有两个点可以从A移到B,三个点从B移到C。这种情况下,我应该选择重新分配哪个点?

场景 2。如下循环。让所有边权重为 1。对于集群 A 中的点,它可以重新分配给集群 B 或 D。在这种情况下。我应该如何重新分配?

场景 3 类似于场景 2。让所有边的权重为 1。较大的循环中有两个小循环。集群 A 中的点可以重新分配给 B 和 E,在这种情况下我如何决定重新分配?

欢迎提出任何一种方案的想法!

考虑到上述情况,还有关于实施算法的任何建议吗?使用伪代码更好。谢谢!

【问题讨论】:

    标签: algorithm graph cluster-analysis


    【解决方案1】:

    如果边缘权重与重新聚类点所获得的收益成正比,那么一个不错的启发式方法是选择总权重最高的循环。我认为这解决了您的所有三种情况:当您有选择时,请选择最适合您的情况。


    讨论:

    Algorithm for clustering with size constraints 中描述的算法是一种寻找局部最小值的贪心算法。因此,无论你在这些场景中如何选择,都不能保证你会找到最佳解决方案,任何选择都会让你更接近局部最小值。

    由于与约束排序的类似问题的关系,我的直觉是最小问题将是 NP-hard。如果不是这种情况,那么存在一种比我之前描述的更好的算法。但是,这种贪心算法似乎是解决最小问题的快速解决方案。

    【讨论】:

    • 谢谢!改造图表后,它现在对我来说非常有意义。非常感谢!
    • 问题没仔细看,是feedback arc set吗?
    • @David 最终目标相似(有一个 DAG)。但是,只有当它是被移除的整个循环的一部分时,才能移除边缘。此外,每一步都可以重新连接整个图表。因此 FAS 是不够的。
    猜你喜欢
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 2019-03-28
    相关资源
    最近更新 更多