摘要:
求解最大流一般采用两种思路,一种是预流,另一各是增广路。增广路这种思想是基于以下定理:定理一:设网络 G 的源为 S, 汇和 T,F和 C 分别为 G 的流和容量,则 F 是最大流当且仅当 G 中不存在可增广路。由此定理可以设计很多算法来计算最大流,Dinic 算法是其中一种比较高效的方法,其复杂度为 O(n2*m)Dinic 算法的基本步骤为:1) 计算残余网络的层次图。我们定义 h[i] 为顶点 i 距离源 S 所经过到最小边数,求出所有顶点的 h 值,h[] 值相同的顶点属于同一层,这就是网络的层次图。2) 在层次图上进行 BFS 增广,直到不存在增广路径。这时求得的增广路径上顶点是分层 阅读全文