记录了用matlab解决最大流问题的代码!

文章完善进度100%

需求&方法1

求出下图网络中点1到点5的最大流量(就是问从点1到点5几条路中,每条路都有车辆数量限制,则某一时刻点1到点5最多可以允许几辆车通过)

具体操作步骤

输入代码

1
2
3
4
5
6
7
8
9
10
11
12
13
s = [1 1 2 2 3 3 4];
t = [2 3 3 4 4 5 5];
weights = [10 6 15 5 10 3 8];
G = digraph(s,t,weights);
H = plot(G,'EdgeLabel',G.Edges.Weight);
%指定 'augmentpath' 使用 Ford-Fulkerson 算法,并使用两个输出以返回非零流的图
[mf,GF] = maxflow(G,1,5,'augmentpath')
H.EdgeLabel = {};
%突出显示非零流的图并对其添加标签。
highlight(H,GF,'EdgeColor','r','LineWidth',2);
st = GF.Edges.EndNodes;
labeledge(H,st(:,1),st(:,2),GF.Edges.Weight);
fprintf('最大流量 = %d\n', mf);

其中,代码前3行往下竖着看,“s为1、t为2、weight为3”时表示点1到点2路径长度为10,其它类似。
结果如下:最大流量为“11”。