第一步,求出最大流
a=zeros(7); a(1,[2 4 3])=[3 3 6]; a(2,[4 5])=[1 3]; a(3,[4 6])=[4 2]; a(4,[5 6])=[2 7]; a(5,7)=6; a(6,7)=7; a=sparse(a); [b,c]=graphmaxflow(a,1,7);
得出结果为12
model:
sets:
nodes/s,1,2,3,4,5,t/:d;
arcs(nodes,nodes)/s 1,s 2,s 3,1 4,4 t,1 3,2 3,2 5,3 4,3 5,5 t/:b,c,f;
endsets
data:
d=12 0 0 0 0 0 -12;
b=2 1 4 3 4 3 3 4 3 1 2;
c=3 6 3 3 6 1 4 2 2 7 7;
enddata
min=@sum(arcs:b*f);
@for(nodes(i):@sum(arcs(i,j):f(i,j))-@sum(arcs(j,i):f(j,i))=d(i));
@for(arcs:@bnd(0,f,c));
第二步,求最小费用最大流 (有用到第一步得出的最大流12)
最小费用为98
详细参见 《数学建模算法与应用》,以及B站up主【【MATLAB】最小费用最大流问题求解,两步走秒杀法】https://www.bilibili.com/video/BV1sf4y157ZG?vd_source=5b1ad18fb52e8fa7539eb6c11a21850e