【问题标题】:Divide a graph into same size disjoint sets with minimum cut用最小割将图划分为相同大小的不相交集
【发布时间】:2016-10-09 14:56:57
【问题描述】:

是否有任何算法或代码将图节点划分为两个或多个满足以下条件的不相交集: 首先,只允许移除边缘。 其次,对边缘进行加权,并且那些将被删除的边缘必须具有最小权重(最小切割算法)。 第三,期望的不相交集尽可能长。

【问题讨论】:

    标签: algorithm graph graph-theory disjoint-sets minimum-cut


    【解决方案1】:

    看起来您正在尝试解决最小二等分问题,其中给定一个图 G,您希望将 V[G] 划分为两个大小相等的不相交子集 A 和 B,使得A 和 B 之间的边缘被最小化。不幸的是,the Min-bisection problem is known to be NP-hard。然而,Kernighan–Lin algorithm 是一个非常简单的 O(n^2*logn) 启发式算法来解决这个问题。虽然理论上对该算法知之甚少(我们没有证明其性能相对于最佳解决方案的界限),但算法is shown to be quite effective in experiments

    【讨论】:

    • 非常感谢!我可以删除一个随机边(女巫按重量升序排序)然后尝试为图形找到生成树(O(|V|+|E|)),如果生成树不可用,那么我可以说删除边缘使图断开连接,我们有两个不相交的集合。然后我检查不相交集合的大小。我想找到集合的大小是 O(V) 的顺序。我对么?我真的不需要尺寸相同的套装,但最好是接近比例。
    • 如果我找到一条边,使两个不相交的集合具有 10% 和 90% 的比例,那将是令人满意的。我想以递归方式执行此过程,以将图划分为两个不相交的集合,这些集合尽可能少地丢失边。
    猜你喜欢
    • 2016-11-28
    • 2021-02-26
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    相关资源
    最近更新 更多