【发布时间】:2017-08-29 14:16:34
【问题描述】:
我最近发现在带有加权边的图中找到最大切割是 NP 难的。然而,找到最小割不是 NP 难的。 如果我反转所有边上的权重,然后搜索最小切割,那不是给我原始图上的最大切割吗?如果不是,为什么?
【问题讨论】:
-
这个问题可能更适合cs.stackexchange.com。
标签: algorithm graph graph-algorithm
我最近发现在带有加权边的图中找到最大切割是 NP 难的。然而,找到最小割不是 NP 难的。 如果我反转所有边上的权重,然后搜索最小切割,那不是给我原始图上的最大切割吗?如果不是,为什么?
【问题讨论】:
标签: algorithm graph graph-algorithm
我假设你的逆是指将权重 w 更改为 -w。
在这种情况下,调整后的图的最小割确实解决了原始图的最大割问题。
不幸的是,解决最小割问题的有效算法只有在所有权重都为非负时才能知道,这意味着我们只有在所有权重都为非正时才能有效地解决最大割。
【讨论】:
w(i) = MAX(weights) -w(i) 创建一个图表并运行 min cut max flow 会怎样?所有权重都是正数,新图中的最小切割将是最大切割。不是吗?
图的最大割不是具有反权重的图的最小割。考虑下图:红线是最小切割,绿色是最大切割。
如果你的意思是“相反”,那么确实为一个找到最大值归结为为另一个找到最小值。证明很简单。
设 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) <= M 和 w'_1+...+w'_q >= -M。所以我们有 -M 是 G' 中的最小切割值,v_1,..., v_n 实现了这个值,它是 G' 的最小切割。
关于为什么这不是一个容易解决的问题,请参阅 Peter de Rivaz 的回答。
【讨论】:
1(其中实例保持完全相同),则提到的“权重反转”特别引人注目。
要查找问题的类别(多项式或非多项式),您应该使用Reduction,这是一种将问题转换为另一个问题的机制。您可以在https://cs.stackexchange.com/questions/1531/is-logical-min-cut-np-complete 找到更多讨论。
【讨论】: