需求&方法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”。
