最大流问题
什么叫可行流
设 f i j f_{ij} fij 是通过弧 ( i , j ) (i,j) (i,j) 的运输量,则满足下面两个条件的一组网络流 { f i j } \lbrace{f_{ij}}\rbrace { fij} 叫可行流:
(1) 可行条件:对每一条弧 ( i , j ) (i,j) (i,j) 有 0 ≤ f i j ≤ c i j 0\le f_{ij} \le c_{ij} 0≤fij≤cij.
(2) 守恒条件:对顶点 v i v_i vi 而言,有
∑ ( i , j ) ∈ A f i j − ∑ ( k , i ) ∈ B f k , j = { F ( 当 i = 1 ) 0 ( 当 i = 2 , 3 , ⋯ , n − 1 ) − F ( 当 i = n ) \sum_{(i,j)\in A}f_{ij}-\sum_{(k,i)\in B}f_{k,j}= \begin{cases} F & (当i=1)\\ 0 & (当i=2,3,\cdots,n-1)\\ -F & (当i=n) \end{cases} (i,j)∈A∑fij−(k,i)∈B∑fk,j=⎩⎪⎨⎪⎧F0−F(当i=1)(当i=2,3,⋯,n−1)(当i=n)
式中 A A A 是所有以 v i v_i vi 为起点的弧的集合, B B B 是所有以 v i v_i vi 为终点的弧的集合。
上述 F ≥ 0 F\ge0 F≥0,称为这个可行流的值,即从起点 v 1 v_1 v1 运出的货物总量,也就是终点 v n v_n vn 收到的总量。
Ford-Fulkerson 方法
Ford-Fulkerson 方法是由 Ford,Fulkerson 在 1956 年提出的一种迭代法。
什么叫可扩充路
设 { f i j } \lbrace{f_{ij}}\rbrace { fij} 是一组可行流,如果存在一条连接 v 1 v_1 v1 与 v n v_n vn 的路 P P P (假设其方向是由 v 1 v_1 v1 到 v n v_n vn ),满足
(1) 在 P P P 的所有前向弧上 f i j < c i j f_{ij}<c_{ij} fij<cij;
(2) 在 P P P 的所有后向弧上 f i j > 0 f_{ij}>0 fij>0;
则称 P P P 是关于流 { f I j } \lbrace{f_{Ij}}\rbrace { fIj} 的一个可扩充路。
Theorem 1 对于一个可行流 { f i j ( 1 ) } \lbrace{f_{ij}^{(1)}}\rbrace { fij(1)} 来说,如果能找到一条可扩充路 P P P,那么 { f i j ( 2 ) } \lbrace{f_{ij}^{(2)}}\rbrace { fij(2