嗨,我在用max-flow min-cut Theorem研究Ford-Fulkerson算法时遇到了麻烦。
根据该定理,最大流量应与要切割的边缘的总重量相同。
但是,观看视频https://www.youtube.com/watch?v=Tl90tNtKvxs会让我感到困惑。讲师说,根据福特-福克森算法,最大流量为19,但是我找不到以19为代价的削减。
答案 0 :(得分:2)
切口表示您在源极和漏极之间定义了切口。该切口不必是直线,曲线或任何其他形状就可以。
例如,在这里我选择了 blue 切割,以使边缘 AB , AD 和 CD 都通过那个切口。现在,如果我们看一下这些边的分配流,并对它们进行求和,就得出 4 + 6 + 9 = 19 。
另一种选择是绿色。在这里,我们有 BT , AD 和 AC 沿“向前”移动的边缘,以及有 DC 沿移动“向后”。因此,流量的总和为 9 + 6 + 9-5 = 19 。因此,无论我们采取什么削减措施,总和始终为19(当然,我们需要进行适当的簿记,并从相反的方向减去流量)。
当然,您可以选择任何所需的剪切(例如,紧接在源之后或流失之前的剪切),如果算法正确完成,则所有这些剪切的总和始终为19。这是合乎逻辑的,因为如果一个剪切的流量将大于(或小于)19,则存在一个剪切的存在会“推进”一个流量为19的节点,这意味着该节点中的流量已经消失或出现。
但是它认为,如果您要遍历所有可能的削减,那么最小削减就是使容量总和最大化的削减。因此,严格来说,我们可以遍历所有可能的削减,并每次跟踪容量之和,最后选择流量最小的那个。天真的方法,如果只是简单地迭代所有切割,则会产生 O(2 n )算法,与 Ford–Fulkerson算法相比 em>,当然是不可取的。
答案 1 :(得分:2)
您对最大流最小割定理的解释没错。
最小切割集由边缘SA和CD组成,总容量为19。
要进行削减并计算成本,您可以:
对于上面的最小值,S包含顶点s和c,而D包含其余顶点。