最小费用最大流问题
()
1. 定义
前提:在给定网络D=(V,A,C)D=(V,A,C)D=(V,A,C)中,每一弧(vi,vj)∈A(v_{i},v_{j}) \in A(vi,vj)∈A上,除了已给容量cijc_{ij}cij外,还有费用b(vi,vj)≥0b(v_{i},v_{j}) \geq 0b(vi,vj)≥0(简记为bijb_{ij}bij).
问题:求一个从出发点vsv_{s}vs到收点vtv_{t}vt的最大流,使流的总输送费用∑(vi,vj)∈Abijfij取最小值。\sum_{(v_{i},v_{j})\in A}{b_{ij}f_{ij}}取最小值。∑(vi,vj)∈Abijfij取最小值。
化为线性规划模型:
min∑(vi,vj)∈Abijfij
min \sum_{(v_{i},v_{j})\in A}{b_{ij}f_{ij}} \\
min(vi,vj)∈A∑bijfij
s.t.={0≤fij≤cij,∀(vi,vj)∈A∑j:(vi,vj)∈Afij−∑j:(vj,vi)∈Afji=di
s_{.}t_{.}=\left\{
\begin{aligned}
0 \leq f_{ij} \leq c_{ij},\quad\forall(v_{i},v_{j}) \in A \\
\\
\sum_{j:(v_{i},v_{j})\in A}{f_{ij}}-\sum_{j:(v_{j},v_{i})\in A}{f_{ji}}=d_{i}
\end{aligned}
\right.
s.t.=⎩⎪⎪⎪⎨⎪⎪⎪⎧0≤fij≤cij,∀(vi,vj)∈Aj:(vi,vj)∈A∑fij−j:(vj,vi)∈A∑fji=di
式中:
di={v(fmax),i=s−v(fmax),i=t0,i≠s,tv(fmax)为最大流的流量
d_{i} =\left\{
\begin{aligned}
v(f_{max}),i=s \\
-v(f_{max}),i=t \\
0,i\neq s,t
\end{aligned}
\right. \\
\quad \text{$v(f_{max})$为最大流的流量}
di=⎩⎪⎨⎪⎧v(fmax),i=s−v(fmax),i=t0,i̸=s,tv(fmax)为最大流的流量
2.求最小费用流的一种迭代方法
步骤:
(1)求从发点到收点的最小费用通路μ(s,t)\mu(s,t)μ(s,t)
(2)对该通路μ(s,t)\mu(s,t)μ(s,t)分配的最大可能流量
fˉ=min(vi,vj)∈μ(s,t){cij},
\bar{f}=\mathop{min} \limits_{(v_{i},v_{j})\in \mu(s,t)} \{c_{ij}\},
fˉ=(vi,vj)∈μ(s,t)min{cij},
并让通路上的所有边的容量相应减少fˉ\bar{f}fˉ.这时,对于通路上的饱和边,其单位流费用改为∞\infty∞
(3)做该通路μ(s,t)\mu(s,t)μ(s,t)上所有边(vi,vj)(v_{i},v_{j})(vi,vj)的反向边(vj,vi)(v_{j},v_{i})(vj,vi)令:
cij=fˉ,bji=−bij
c_{ij}=\bar{f},\quad b_{ji}=-b_{ij}
cij=fˉ,bji=−bij
(4)重复步骤(1)(2)(3)直至从发点到收点全部流量==指定的vfv_{f}vf
注:以上我所写内容均来自于《数学建模算法与应用(第二版)》(司守奎,孙兆亮主编),仅为我个人按书上写的练习所用