主要内容

이번역번역이지는최신내용을담고담고않습니다않습니다。최신최신내용을영문영문으로여기를클릭클릭

maxflow.

그래프의최대흐름(最大流量)

설명

예제

MF.= maxflow(G英石는노드S.와노드T.사이의최대흐름을을합니다。그래프G가비가중중(未加权图形)(즉,G.Edges.가변수重量를포함하지않음)이면maxflow.가모든그래프간선을가중치가1인것으로합니다。

예제

MF.= maxflow(G英石算法은사용할할최대흐름(最大流量算法)을지정합니다。이구문은G가유방향유방향그래프인경우경우에만만할수

예제

[MF.GF.] = maxflow(___는위에열거된구문입력입력를사용하여유방향객체GF.도도합니다。GF.G에서0이아닌흐름값을갖는간선사용하여하여형성。

예제

[MF.GF.CSCT.] = maxflow(___는는또한최대흐름흐름과연결최소절단(最低剪切)을나타내는소스노드id와타깃id,즉CSCT.도도합니다。

예제

모두축소

가중그래프(加权图)를생성하고플로팅。가중치간선간선은흐름흐름을을

S = [1 1 2 2 3 4 4 4 5 5];T = [2 3 3 4 5 3 5 6 4 6];重量= [0.77 0.44 0.67 0.75 0.89 0.90 2 0.76 1 1];G = Digraph(S,T,重量);绘图(g,'Edgelabel',g.edges.weight,'布局''分层');

노드1에서노드6까지의최대흐름을합니다。

mf = maxflow(g,1,6)
MF = 1.2100.

그래프를생성하고플로팅합니다。가중치간선간선은흐름흐름을을

S = [1 1 2 2 3 3 4];t = [2 3 3 4 4 5 5];重量= [10 6 15 5 10 3 8];G = Digraph(S,T,重量);h = plot(g,'Edgelabel',g.edges.weight);

노드1과노드5사이의최대흐름값을구합니다。포드 - 풀풀알고리즘(Ford-Fulkerson算法)을사용하도록'augmentpath'를지정하고0이아닌흐름에대한그래프를할두개의출력값사용용

[MF,GF] = maxFlow(g,1,5,'augmentpath'
MF = 11.
GF =具有属性的数字:边缘:[6x2表]节点:[5x0表]

0이아닌흐름에대한그래프를표시하고레이블을을지정

H.edgeLabel = {};亮点(h,gf,'Edgecolor''r''行宽',2);st = gf.edges.endnodes;LabelEdge(h,st(:,1),st(:,2),gf.edges.weight);

가중그래프(加权图)를생성하고플로팅。간선가중치는흐름용량을。

s = [1 1 2 3 3 4 4 5 5];t = [2 3 3 2 5 5 6 4 6];重量= [0.77 0.44 0.67 0.69 0.73 2 0.78 1 1];G = Digraph(S,T,重量);绘图(g,'Edgelabel',g.edges.weight,'布局''分层'

그래프그래프의최대(最大流量)과최소절단구합니다。

[MF,〜,CS,CT] = maxflow(g,1,6)
MF = 0.7300.
CS =3×11 2 3.
ct =3×14 5 6.

CS노드를소스로사용하고CT.노드를싱크로사용하여최소절단을플로팅。CS노드노드를빨간색으로으로강조표시CT.노드를녹색으로강조합니다합니다。참고로,이두노드의집합을하는간선가중치는최대최대흐름과

h = plot(g,'布局''分层'“来源”,CS,'下沉',CT,......'Edgelabel',g.edges.weight);突出显示(H,CS,'nodecolor''红色的')亮点(H,CT,'nodecolor''绿色'

입력인수

모두축소

입력그래프로,图形객체또는dig객체로지정됩니다。무방향그래프를생성하려면图形를사용하고하고하고유방향그래프를생성하려면dig를사용하십시오。

예:g =图(1,2)

예:G = Digraph([1 2],[2 3])

노드쌍으로,소스노드와타깃노드나타내는노드인덱스노드이름의의개별인수로지정지정다음표에서노드인덱스노드노드이름사용을을을참조하는몇가지방법을보여줍니다。

예제
스칼라노드인덱스 1
문자형벡터노드이름 '一种'
字符串형스칼라노드이름 “一种”

예:mf = maxflow(g,'a','b')

예:mf = maxflow(g,1,10)

데이터형:双倍的|char|细绳

최대최대알고리즘으로,다음표의항목중하나로지정됩니다。

참고

유방향그래프에만디폴트가아닌算法옵션을지정할수있습니다。

옵션 설명
'searchtrees'(디폴트값)

보이코프 - 콜모고로프알고리즘(Boykov-Kolmogorov算法)을사용용。노드S.와노드T.00

'augmentpath'

포드 - 풀커슨알고리즘(Ford-Fulkerson算法)을사용합니다。잔차유방향그래프그래프에서확장되는경로를구해최대흐름을적으로계산계산계산적으로계산계산

유방향그래프는동일한두노드사이에있는반대방향의다중간선(并行边缘)중하나의가중치가0인경우가아니라면이러한간선을동일한두노드사이에포함할수없습니다。따라서그래프가간선[I J]를포함하는경우[I J]의가중치와[j i]의가중치중하나또는이둘모두가0일때에만반대의간선[j i]를포함할수있습니다。

'pushrelabel'

노드의과다흐름(多余的流量)을을이웃에밀어(PUSH)후노드에레이블다시을다시지정하여최대흐름계산계산계산계산

유방향그래프는동일한두노드사이에있는반대방향의다중간선(并行边缘)중하나의가중치가0인경우가아니라면이러한간선을동일한두노드사이에포함할수없습니다。따라서그래프가간선[I J]를포함하는경우[I J]의가중치와[j i]의가중치중하나또는이둘모두가0일때에만반대의간선[j i]를포함할수있습니다。

예:mf = maxflow(g,'a','d','augmentpath')

출력인수

모두축소

최대최대흐름,스칼라로반환됩니다。

흐름에대한유방향그래프로,dig객체로반환됩니다。GF.G와와동일한노드노드를포함,G의간선중0이아닌흐름을갖는간선만합니다합니다。동일동일두노드사이에다중간선이있는다중그래프의경우,GF.00

최소절단소스노드노드,노드인덱스또는노드이름으로으로반환。

  • S.T.가숫자형숫자형노드인덱스인덱스를할할CSCT.도노드인덱스를갖습니다。

  • S.T.가노드이름을을지정할할CSCT.도노드이름을을。

최소절단타깃노드노드,노드인덱스또는노드이름으로으로반환。

  • S.T.가숫자형숫자형노드인덱스인덱스를할할CSCT.도노드인덱스를갖습니다。

  • S.T.가노드이름을을지정할할CSCT.도노드이름을을。

세부정보

모두축소

최대흐름(最大流量)

최대흐름에서그래프의간선은가중치로가중치로표현표현용량을갖는것으로간주됩니다。따라서,그래프에서두노드사이의최대흐름은연결되는간선용량을을기반으로하여소스S.에서타깃노드T.로로전달되는흐름흐름의을최대화화

최소절단(最低剪切)

최소절단은CSCT.를연결하는모든간선의가중치합(절단의가중치)이최소화화되도록유방향그래프노드노드두개의CSCT.로로합니다。최소절단의가중치는최대최대흐름MF.와와합니다。

CSCT.의항목은각각노드S.와노드T.에연결된G의노드를나타냅니다。CSCT.numel(cs)+ numel(ct)= numnodes(g)를를합니다。

참고항목

|

R2015B에개발됨