这里初学,总结出一些知识点,这里于大家共享。
引入问题:
现在想将一些物资从S运到T,必须经过一些中转站。连接中转站的是一些单向公路,每条公路都有最大运载量。最多能将多少货物从S运到T?
建图:
V表示整个图中节点的集合
E表示整个图中所有边的集合
G = (V, E)表示整个图
对于每条边(u, v), 有一个容量c(u, v)表示每条公路的最大运载量 c(u, v) ≥ 0
对于每条边(u, v), 有一个流量f(u, v)表示每条公路经过货物的数量
S表示整个图的源点,T表示整个图的汇点【s是起点,T是终点】
Ford-Fulkerson算法操作步骤:
(1)初始化网络中所有边的容量,C(u,v)称为边的容量,C(v,u)称为退回边,初始化其最大流为0;
(2)在残留网络中找到一条从源点S到汇点T的增广路P,如果找到了,转(3),否则转(5);
(3)在增广路P中找到所谓的瓶颈边【即路径中容量最小的边】,记录下这个值a,并且累加到最大流中,转(4);
(4)将增广路中所有的f(u,v)加上a,所有f(v,u)