一、定义与定理
最小费用最大流:设G是以s为源t为汇的网络,c是G的容量,b是G的单位流量费用,且有b[i][j] = -b[i][j],f是G的流,则b(f)=∑(fij*bij),(i, j)∈E(G) 且fij>0。最小费用最大流问题,就是求网络G的最大流f且使费用b(f)最小。这样的流称为最小费用最大流。
二、算法思想
用Ford-Fulkerson算法的思想,不断地在残留网络中寻找增广路,只不过这个增广路是当前网络中s到t的以单位流量费用为权的最短路,对这条增广路进行操作。由于费用有负值,建议用SPFA算法。
三、算法介绍
描述:
1
mcmf()
2
{
3
while(true)
4
{
5
for(int i=1; i<=n+m+1; i++)
6
d[i] = MAX;
7
d[s] = 0;
8
spfa(); //p中存有该点的前继点
9
if(p[t] == -1) //表示已无增广路
10
break;
11
int minf = INT_MAX;
12
int it = t;
13
while(p[it] != -1)
14
{
15
minf = min(minf, c[p[it]][it] - f[p[it]][it]);
16
it = p[it];
17
}
18
it = t;
19
while(p[it] != -1)
20
{
21
f[p[it]][it] += minf;
22
f[it][p[it]] = -f[p[it]][it];
23
it = p[it];
24
}
25
}
26
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

三、算法示例
POJ 2516 解题报告