我最近一直在研究一些算法,并且遇到了以下问题:
给定未定向的未加权可能断开的图G(V,E)找到G的k个分区,使得每个分区具有相同数量的顶点(假设顶点的总数是k的倍数)并且存在最小值G中连接不同分区中顶点的边数。
我不是在寻找这个问题的多项式时间算法(因为它可能是NP-Hard),而是一种算法,可以在24小时内找到150个顶点和1200个边缘的解。虽然任何好的近似算法都会受到高度赞赏,但我更倾向于一个精确的解决方案。
我保持问题尽可能简单,但是定向加权图的一般解决方案也会很好。
感谢您的帮助!
更新:我刚做了一些研究,并意识到这可以被重新解释为修改后的连接问题。也许沿着这条思路有一个解决方案?
答案 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算法。