主要内容

最大流

图中的最大流

描述

实例

mf=最大流量(G,s、 t)返回最大流量节点间sT.If图G未加权(即,G.边缘不包含该变量重量)那么最大流将所有图形边视为具有等于1的权重。

实例

mf=最大流量(G,s、 t,算法)指定要使用的最大流算法。此语法仅在以下情况下可用:G是一个有向图。

实例

[mf,女朋友]=最大流量(___)还返回一个有向图对象,女朋友,使用前面语法中的任何输入参数。女朋友仅使用中的边形成G具有非零流量值的。

实例

[mf,女朋友,反恐精英,计算机断层扫描]=最大流量(___)另外还返回源节点和目标节点ID,反恐精英计算机断层扫描,代表最小割与最大流量关联。

例子

全部崩溃

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

s=[1 2 3 4 4 5];t=[2 3 4 3 5 6];权重=[0.77 0.44 0.67 0.75 0.89 0.90 2 0.76 1];G=有向图(s,t,权重);绘图(G,“EdgeLabel”,G.重量,“布局”,“分层”);

Figure包含axes对象。axes对象包含graphplot类型的对象。

确定从节点1到节点6的最大流量。

mf=最大流量(G,1,6)
mf=1.2100

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

s=[1,2,3,4];t=[2,3,4,5];权重=[10,6,15,10,3,8];G=有向图(s,t,权重);H=绘图(G,“EdgeLabel”重量);

Figure包含axes对象。axes对象包含graphplot类型的对象。

查找节点1和节点5之间的最大流量值。指定“增强路径”使用Ford Fulkerson算法,并使用两个输出返回非零流图。

[mf,GF]=maxflow(G,1,5,“增强路径”)
mf=11
GF=具有以下属性的有向图:边:[6x2表]节点:[5x0表]

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

H.EdgeLabel={};突出显示(H,GF,“EdgeColor”,“r”,“线宽”,2);st=GF.Edges.EndNodes;标签边(H,st(:,1),st(:,2),GF.Edges.Weight);

Figure包含axes对象。axes对象包含graphplot类型的对象。

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

s=[1 2 3 4 5];t=[2 3 2 5 6 4 6];权重=[0.77 0.44 0.67 0.69 0.73 2 0.78 11];G=有向图(s,t,权重);绘图(G,“EdgeLabel”,G.重量,“布局”,“分层”)

Figure包含axes对象。axes对象包含graphplot类型的对象。

求图的最大流和最小割。

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

使用图形绘制最小切割反恐精英作为源的节点和计算机断层扫描节点作为接收器。突出显示反恐精英节点显示为红色,并且计算机断层扫描节点为绿色。请注意,连接这两组节点的边的权重等于最大流量。

H=曲线图(G,“布局”,“分层”,“来源”,政务司司长,“下沉”,ct,...“EdgeLabel”重量);突出显示(H、cs、,“NodeColor”,“红色”)突出显示(H、ct、,“NodeColor”,“绿色”)

Figure包含axes对象。axes对象包含graphplot类型的对象。

输入参数

全部崩溃

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

例子:G=图(1,2)

例子:G=有向图([12],[23])

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

价值 实例
标量节点索引 1.
字符向量节点名 “A”
字符串标量节点名 “A”

例子:mf=最大流量(G,'A','B')

例子:mf=最大流量(G,1,10)

数据类型:双重的|烧焦|一串

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

笔记

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

选项 描述
“搜索树”(默认)

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

“增强路径”

使用Ford-Fulkerson算法。通过在剩余有向图中查找增广路径,迭代计算最大流。

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

“pushrelabel”

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

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

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

输出参数

全部崩溃

最大流,以标量形式返回。

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

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

  • 如果sT指定数值节点索引,然后反恐精英计算机断层扫描还包含节点索引。

  • 如果sT指定节点名称,然后反恐精英计算机断层扫描还包含节点名称。

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

  • 如果sT指定数值节点索引,然后反恐精英计算机断层扫描还包含节点索引。

  • 如果sT指定节点名称,然后反恐精英计算机断层扫描还包含节点名称。

更多关于

全部崩溃

最大流量

在最大流的上下文中,图中的边被认为具有容量由边权重表示。边缘的容量是可以通过该边缘的流量。因此,图中两个节点之间的最大流量最大化了从源节点通过的流量,s,到目标节点,T,基于连接边的容量。

最小割

最小割将有向图节点划分为两个集合,反恐精英计算机断层扫描,这样所有连接边的权重之和反恐精英计算机断层扫描(切割重量)最小化。最小切割的重量等于最大流量值,mf.

中的条目反恐精英计算机断层扫描指示的节点G与节点关联sT分别地反恐精英计算机断层扫描满足纽梅尔(cs)+纽梅尔(ct)=纽结(G).

另见

|

R2015b中引入