主要内容

maxflow.

最大流程

描述

例子

曼氏金融= maxflow(Gs t返回最大流量节点之间S.T..如果图G是未加权的(即,G.Edges不包含变量重量),然后maxflow.将所有的图边视为权值等于1。

例子

曼氏金融= maxflow(Gs t算法指定要使用的最大流算法。此语法仅在以下情况下可用G是一条定向图。

例子

[曼氏金融GF.) = maxflow (___也返回一个有向图对象,GF.,使用前面语法中的任何输入参数。GF.是形成只用边在G具有非零流量值。

例子

[曼氏金融GF.CSCT.) = maxflow (___另外返回源和目标节点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 =有向图(s t重量);绘图(g,'Edgelabel'G.Edges.Weight,'布局'“分层”);

图包含轴。轴包含Type Graphplot的对象。

确定从节点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 =有向图(s t重量);h = plot(g,'Edgelabel', G.Edges.Weight);

图包含轴。轴包含Type Graphplot的对象。

求节点1与节点5之间的最大流量值。指定'augmentpath'要使用Ford-Fulkerson算法,并使用两个输出返回非零流的图形。

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

突出显示并标记非零流的图表。

H.EdgeLabel = {};突出(H,女朋友,'Edgecolor''r''行宽',2);st = gf.edges.endnodes;LabelEdge(h,st(:,1),st(:,2),gf.edges.weight);

图包含轴。轴包含Type Graphplot的对象。

创建并绘制加权图。边缘重量表示流量容量。

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 =有向图(s t重量);绘图(g,'Edgelabel'G.Edges.Weight,'布局'“分层”

图包含轴。轴包含Type Graphplot的对象。

找到图形的最大流量和最小剪切。

[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, c,“NodeColor”'红色的')亮点(H,CT,“NodeColor”“绿色”

图包含轴。轴包含Type Graphplot的对象。

输入参数

全部折叠

输入图形,指定为a图形有向图对象。使用图形创建无向图或有向图创建定向图形。

例子:图G =(1、2)

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

节点对指定为节点指数的单独参数或节点名称以指示源节点和目标节点。此表显示了通过节点指数或其节点名称引用节点的不同方式。

价值 例子
标量节点索引 1
字符向量节点名 '一种'
字符串标量节点名 “一个”

例子:mf = maxflow (G, A, B)

例子:mf = maxflow(g,1,10)

数据类型:|字符|细绳

最大流量算法,指定为表中的一个表项。

笔记

您只能指定非默认算法选项带有定向图形。

选项 描述
'searchtrees'(默认)

使用Boykov-Kolmogorov算法。通过构造两个与节点相关联的搜索树来计算最大流量S.T.

'augmentpath'

使用Ford-Fulkerson算法。通过在剩余定向图中查找增强路径来计算最大流量。

定向图不能在相同的两个节点之间具有相反方向的任何并行边缘,除非这些边的一个的重量为零。因此,如果图表包含边缘[I J],则可以包含反向边[j i]只要重量[I J]0和/或的权重是多少[j i]是零。

“pushrelabel”

通过将一个节点的多余流量推给它的邻居,然后重新标记该节点来计算最大流量。

定向图不能在相同的两个节点之间具有相反方向的任何并行边缘,除非这些边的一个的重量为零。因此,如果图表包含边缘[I J],则可以包含反向边[j i]只要重量[I J]0和/或的权重是多少[j i]是零。

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

输出参数

全部折叠

最大流量,作为标量返回。

流的有向图,返回为有向图对象。GF.包含的节点与G,但只包含G这是一个非零流。对于具有同一两个节点之间的多个边缘的多层的多层物,GF.包含通过多边缘反射流量的单个边缘。

最小剪切源节点ID,返回为节点索引或节点名称。

  • 如果S.T.指定数字节点索引,然后CSCT.还包含节点索引。

  • 如果S.T.指定节点名称,然后指定节点名称CSCT.还包含节点名称。

最小削减目标节点id,返回为节点索引或节点名称。

  • 如果S.T.指定数字节点索引,然后CSCT.还包含节点索引。

  • 如果S.T.指定节点名称,然后指定节点名称CSCT.还包含节点名称。

更多关于

全部折叠

最大流量

在最大流量的背景下,图中的边缘被认为具有一个能力由边缘重量表示。边缘的容量是可以通过该边缘的流量。因此,图中两个节点之间的最大流动最大化了从源节点的流量的量,S.,发送到目标节点,T.,根据连接边的能力。

删减。

最小剪切将定向图节点分为两组,CSCT.,使得所有边缘连接的权重的总和CSCT.(切割的重量)最小化。最小切割的重量等于最大流量值,曼氏金融

参赛作品CSCT.表示节点G与节点相关联S.T., 分别。CSCT.满足nummel (cs) + nummel (ct) = numnodes(G)

也可以看看

|

介绍了R2015b