为什么福特富克森如此无处不在?

Why is ford-fulkerson so ubiquitous?

在查看最大流解决方案时,ford-fulkerson 似乎无处不在,因为它是大多数人用来解决此问题的算法。但是有many more algorithms that can solve the problems and at a significantly better time complexity。那为什么ford-fulkerson到现在还被广泛使用呢?

Ford–Fulkerson 是最简单的算法,它体现了当且仅当流没有增广路径时流最大的关键思想。这对教学很有用。

由于 F–F 没有指定如何找到增广路径,因此它更像是一个框架而不是算法。 Edmonds–Karp 是 F–F 的一个实例,它限制了必须找到的增广路径的数量。 Dinic 的算法改进了 Edmonds–Karp,保留了一个数据结构,使其能够更有效地找到增广路径。 (稍微偏离常规,由于 Borradaile and Klein,平面网络中 s-t 流的 O(n log n) 时间算法也是 F-F 实例化。)

push-relabel 算法将 Dinic 算法背后的思想更进一步,但它们在使用预流而不是流时打破了 F-F 模式(预流允许更多的流量进入顶点而不是离开,但反之则不然)。从历史上看,他们遵循 Dinic 的算法,并且作为对 Dinic 的反应更直观。

该列表中的其他算法很复杂,不适合本科教学,这解释了缺少教程 material。