查找具有最小边的交叉分区的图分区

时间:2017-02-15 03:58:05

标签: algorithm graph graph-theory

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

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

我不是在寻找这个问题的多项式时间算法(因为它可能是NP-Hard),而是一种算法,可以在24小时内找到150个顶点和1200个边缘的解。虽然任何好的近似算法都会受到高度赞赏,但我更倾向于一个精确的解决方案。

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

感谢您的帮助!

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

2 个答案:

答案 0 :(得分:1)

这确实是NP难题。如果您使用凸优化或者可以学习,我的直觉是将此问题表示为exact cover integer program,其中包含许多变量(每个| V | / k顶点的一个子集)然后实际上用generating columns用整数程序求解器求解该程序,以找到具有许多内边的分区。子问题的表述看起来像

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是由主问题的双重解决方案确定的权重,直观地理解为特定顶点需要覆盖的紧急程度。

答案 1 :(得分:0)

一种方法是使用聚类算法。您不会获得最佳解决方案,而是快速的半最优解决方案。

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