所有对最大流量在Matlab中

时间:2014-07-16 08:31:40

标签: matlab graph-theory max-flow

有没有办法在matlab中找到每对顶点之间的最大流量?

c = sparse([1 1 2 2 3 4 4 5 5 6 7 8 9 9],[2 3 3 4 5 6 7 6 7 8 9 10 8 10],[15 10 3 8 9 7 5 6 2 12 10 6 10 8],10,10)

a = [2 3 4 5 6 7 8 9 10]

b = arrayfun(@(x)max_flow(c,1,x),a)

OR

b = arrayfun(@(x)graphmaxflow(c,1,x),a)

b =  
        15 13 8 9 13 7 16 7 13

因此,我可以采用稀疏矩阵并获得从一个顶点到所有其他顶点的最大流量。有没有办法继续这个以获得所有对的最大流量?

我最终希望能够找到定向加权图的全对最大流量。 。

1 个答案:

答案 0 :(得分:0)

让它发挥作用:

c = sparse([1 1 2 2 3 4 4 5 5 6 7 8 9 9],[2 3 3 4 5 6 7 6 7 8 9 10 8 10],[15 10 3 8 9 7 5 6 2 12 10 6 10 8],10,10)

for a=1:10
for b=1:10
    if a==b
        continue
    end
    t(b,a)=graphmaxflow(c,a,b);
    p=t(:);
end
end

我无法找到使用arrayfun执行此操作的方法。

每个最大流量值:

t =

0   0   0   0   0   0   0   0   0   0
15  0   0   0   0   0   0   0   0   0
13  3   0   0   0   0   0   0   0   0
8   8   0   0   0   0   0   0   0   0
9   3   9   0   0   0   0   0   0   0
13  10  6   7   6   0   0   0   0   0
7   7   2   5   2   0   0   0   0   0
16  11  8   12  8   12  10  0   10  0
7   7   2   5   2   0   10  0   0   0
13  11  8   11  8   6   10  6   14  0

p = 
0
15
13
8
9
13
7
...