【问题标题】:Why is finding the maximum cut NP-hard?为什么要找到最大切割 NP-hard?
【发布时间】:2017-08-29 14:16:34
【问题描述】:

我最近发现在带有加权边的图中找到最大切割是 NP 难的。然而,找到最小割不是 NP 难的。 如果我反转所有边上的权重,然后搜索最小切割,那不是给我原始图上的最大切割吗?如果不是,为什么?

【问题讨论】:

标签: algorithm graph graph-algorithm


【解决方案1】:

我假设你的逆是指将权重 w 更改为 -w。

在这种情况下,调整后的图的最小割确实解决了原始图的最大割问题。

不幸的是,解决最小割问题的有效算法只有在所有权重都为非负时才能知道,这意味着我们只有在所有权重都为非正时才能有效地解决最大割。

【讨论】:

  • 你说得对,我认为 OP 的意思是“相反”。我已经用相反情况的证明更新了我的答案,但这应该是公认的答案。
  • 如果您使用w(i) = MAX(weights) -w(i) 创建一个图表并运行 min cut max flow 会怎样?所有权重都是正数,新图中的最小切割将是最大切割。不是吗?
  • 这将引入使用较少边缘的偏见,因此并不完全相同
【解决方案2】:

图的最大割不是具有反权重的图的最小割。考虑下图:红线是最小切割,绿色是最大切割。

如果你的意思是“相反”,那么确实为一个找到最大值归结为为另一个找到最小值。证明很简单。

设 G 为任意图,G' 为权重相反的图。让v_1,..., v_n 是要删除的顶点序列以使 G 的最大切割,而w_1,..., w_n 是相关的权重。 M = w_1 + ... + w_n = max(cuts)。显然v_1,..., v_n 是 G' 中的一个切口。让v'_1,...,v'_m 是 G' 中的任意一个,w'_1,..., w'_n 是它们在 G' 中的权重。

那么v'_1,...,v'_m 也是 G 的一个减号,重量为-(w'_1+...+w'_q)。根据 M 的定义,我们有 -(w'_1+...+w'_q) <= Mw'_1+...+w'_q >= -M。所以我们有 -M 是 G' 中的最小切割值,v_1,..., v_n 实现了这个值,它是 G' 的最小切割。

关于为什么这不是一个容易解决的问题,请参阅 Peter de Rivaz 的回答。

【讨论】:

  • 为了补充答案,如果所有边权重都是1(其中实例保持完全相同),则提到的“权重反转”特别引人注目。
【解决方案3】:

要查找问题的类别(多项式或非多项式),您应该使用Reduction,这是一种将问题转换为另一个问题的机制。您可以在https://cs.stackexchange.com/questions/1531/is-logical-min-cut-np-complete 找到更多讨论。

【讨论】:

    猜你喜欢
    • 2018-05-29
    • 2016-12-03
    • 2011-04-09
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 2011-08-04
    • 2012-01-06
    • 1970-01-01
    相关资源
    最近更新 更多