【问题标题】:Finding Graph Partitions with Minimum Edges Crossing Partitions查找与分区交叉的最小边的图分区
【发布时间】:2017-02-15 03:58:05
【问题描述】:

我最近一直在研究一些算法,但遇到了以下问题:

给定一个无向无权可能不连通图 G(V, E) 找到 G 的 k 个分区,使得每个分区具有相同数量的顶点(假设顶点的总数是 k 的倍数)并且有一个最小值G 中连接不同分区中的顶点的边数。

我不是在寻找一个多项式时间算法来解决这个问题(因为它可能是 NP-Hard 无论如何),而是一个能在 24 小时内找到 150 个顶点和 1200 个边的解决方案的算法。虽然任何好的近似算法也将不胜感激,但我更喜欢精确的解决方案。

我使问题尽可能简单,但是有向加权图的一般解决方案也很好。

感谢您的所有帮助!

更新:我刚刚做了一些研究,并意识到这可以重新解释为修改后的连接问题。也许按照这种思路有解决方案?

【问题讨论】:

    标签: algorithm graph graph-theory


    【解决方案1】:

    这确实是一个 NP-hard 问题。如果您对凸优化很方便或可以学习,我的直觉是将这个问题表述为具有许多变量(|V|/k 个顶点的每个子集一个)的exact coverinteger program,然后通过 @ 实际解决该程序987654323@ 使用整数程序求解器来查找具有许多内部边缘的分区。子问题公式看起来像

    maximize sum_{vertices v} w_v x_v + sum_{edges uv} y_{uv}
    subject to
    sum_{vertices v} x_v = |V|/k
    y_{uv} <= x_u for all edges uv
    y_{uv} <= x_v for all edges uv
    x_v in {0, 1} for all vertices v
    y_{uv} in {0, 1} for all edges uv
    

    其中w_v 是由主问题的双重解决方案确定的权重,直观地理解为特定顶点需要覆盖的紧急程度。

    【讨论】:

      【解决方案2】:

      一种方法是使用聚类算法。你不会得到最优解,而是快速的半最优解。

      您可以通过多种方式解决此问题。例如,您可以使用双聚类。或者您可以进行主成分分析,选择一些成分并运行修改后的 k-means 算法。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-18
        • 2014-08-13
        • 2010-12-29
        • 1970-01-01
        • 2021-12-03
        • 2015-06-23
        • 1970-01-01
        相关资源
        最近更新 更多