0

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)

また

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

b =  
        15 13 8 9 13 7 16 7 13

したがって、疎行列を取得して、1 つの頂点から他のすべての頂点への最大フローを取得できます。これを続けて、すべてのペアの最大フローを取得する方法はありますか?

最終的には、有向加重グラフのすべてのペアの最大フローを見つけられるようにしたいと考えています。. .

4

1 に答える 1

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
...
于 2015-04-01T20:31:07.760 に答える