主要内容

maxflow

图中最大流量

描述

例子

曼氏金融= maxflow (Gs t返回最大流量节点之间年代而且t.如果图G未加权(即,G.Edges不包含变量重量),然后maxflow将所有图边的权值都处理为1。

例子

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

例子

曼氏金融女朋友= maxflow(___也返回一个有向图对象,女朋友,使用以前语法中的任何输入参数。女朋友是只使用边形成的吗G有非零流量值的。

例子

曼氏金融女朋友csct= maxflow(___额外返回源和目标节点id,cs而且ct,代表删减。与最大流量相关联。

例子

全部折叠

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

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,“布局”“分层”);

图中包含一个轴对象。axis对象包含一个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);

图中包含一个轴对象。axis对象包含一个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,圣(:1),圣(:,2)GF.Edges.Weight);

图中包含一个轴对象。axis对象包含一个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,“布局”“分层”

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

求图的最大流量和最小切割。

[mf,~,cs,ct] = maxflow(G,1,6)
Mf = 0.7300
c =3×11 2 3
ct =3×14 5 6

绘制最小切割,使用cs节点作为源和ct节点作为接收器。突出了cs节点为红色,而ct节点为绿色。注意,连接这两组节点的边的权值等于最大流量。

H = plot(G,“布局”“分层”“源”计算机科学,“汇”ct,...“EdgeLabel”, G.Edges.Weight);突出(H, c,“NodeColor”“红色”)突出(H, ct,“NodeColor”“绿色”

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

输入参数

全部折叠

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

例子:G =图(1,2)

例子:G =有向图([1 2],[2 3])

节点对,指定为节点索引或节点名称的单独参数,以指示源节点和目标节点。这个表显示了通过节点索引或节点名称引用节点的不同方法。

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

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

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

数据类型:|字符|字符串

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

请注意

只能指定非默认值算法有向图的选项。

选项 描述
“searchtrees”(默认)

使用Boykov-Kolmogorov算法。通过构造两个与节点相关的搜索树来计算最大流量年代而且t

“augmentpath”

使用Ford-Fulkerson算法。通过在残差有向图中寻找增广路径,迭代地计算最大流量。

有向图在相同的两个节点之间不能有任何方向相反的平行边,除非其中一条边的权值为零。如果图像包含一条边我[j],则它可以包含反边我[j]只若重之我[j]的权值为0和/或我[j]是零。

“pushrelabel”

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

有向图在相同的两个节点之间不能有任何方向相反的平行边,除非其中一条边的权值为零。如果图像包含一条边我[j],则它可以包含反边我[j]只若重之我[j]的权值为0和/或我[j]是零。

例子:mf = maxflow(G,'A','D','augmentpath')

输出参数

全部折叠

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

流的有向图,返回为有向图对象。女朋友包含相同的节点G,但只包含的边缘G有非零流量。对于在相同的两个节点之间有多条边的多重图,女朋友包含一条反映流经多条边的流的边。

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

  • 如果年代而且t然后指定数值节点索引cs而且ct还包含节点索引。

  • 如果年代而且t然后指定节点名称cs而且ct还要包含节点名。

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

  • 如果年代而且t然后指定数值节点索引cs而且ct还包含节点索引。

  • 如果年代而且t然后指定节点名称cs而且ct还要包含节点名。

更多关于

全部折叠

最大流量

在最大流量的情况下,图中的边被认为具有a能力由边权值表示。边的容量是指能通过该边的流量。因此,图中两个节点之间的最大流量使从源节点通过的流量最大,年代,到目标节点,t,根据连接边的容量。

删减。

最小切割将有向图节点划分为两个集合,cs而且ct,使得所有连接的边的权值之和cs而且ct(切口的重量)最小化。最小切割的重量等于最大流量值,曼氏金融

中的条目cs而且ct的节点G与节点关联年代而且t,分别。cs而且ct满足数字(cs) +数字(ct) = numnodes(G)

另请参阅

|

在R2015b中引入