最大流程
mf = maxflow(g,s,t)
mf = maxflow(g,s,t,算法)
[mf,gf] = maxflow(___)
[MF,GF,CS,CT] = maxFlow(___)
例子
MF.= maxflow(G那英石)返回最大流量节点之间S.和T.。如果是图形G没有减肥(也就是说,G.Edges.不包含变量重量), 然后maxflow.将所有曲线边缘视为具有等于1的重量。
MF.= maxflow(G那英石)
MF.
G
英石
S.
T.
G.Edges.
重量
maxflow.
MF.= maxflow(G那英石那算法)指定要使用的最大流量算法。此语法仅适用于G是一条定向图。
MF.= maxflow(G那英石那算法)
算法
[MF.那GF.] = maxflow(___)还返回一个定向图形对象,GF.,使用先前语法中的任何输入参数。GF.仅使用边缘形成G具有非零流量值。
[MF.那GF.] = maxflow(___)
GF.
[MF.那GF.那CS那CT.] = maxflow(___)另外返回源和目标节点ID,CS和CT.,代表这一点最低削减与最大流量相关联。
[MF.那GF.那CS那CT.] = maxflow(___)
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 = 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之间的最大流量值。指定'augmentpath'要使用Ford-Fulkerson算法,并使用两个输出返回非零流的图形。
'augmentpath'
[MF,GF] = maxFlow(g,1,5,'augmentpath')
MF = 11.
GF =具有属性的数字:边缘:[6x2表]节点:[5x0表]
突出显示并标记非零流的图表。
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 =1 2 3.
ct =4 5 6.
绘制最小切割,使用CS节点作为来源和CT.节点作为下沉。突出显示CS节点是红色和CT.节点为绿色。注意,连接这两组节点的边缘的权重等于最大流量。
h = plot(g,'布局'那'分层'那“来源”,CS,'下沉',CT,......'Edgelabel',g.edges.weight);突出显示(H,CS,'nodecolor'那'红色的')亮点(H,CT,'nodecolor'那'绿色')
图形
dig
输入图形,指定为a图形或者dig目的。用图形创建一个无向图形或dig创建定向图形。
例子:g =图(1,2)
g =图(1,2)
例子:G = Digraph([1 2],[2 3])
G = Digraph([1 2],[2 3])
节点对,指定为标量节点索引或字符向量节点名称的单独参数。
例子:mf = maxflow(g,'a','b')
mf = maxflow(g,'a','b')
例子:mf = maxflow(g,1,10)
mf = maxflow(g,1,10)
数据类型:双倍的|char
双倍的
char
'searchtrees'
'pushrelabel'
最大流量算法,指定为表中的条目之一。
您只能指定非默认算法选项带有定向图形。
使用Boykov-Kolmogorov算法。通过构造与节点相关联的两个搜索树来计算最大流量S.和T.。
使用Ford-Fulkerson算法。通过在剩余定向图中查找增强路径来计算最大流量。
定向图不能在相同的两个节点之间具有相反方向的任何并行边缘,除非这些边的一个的重量为零。因此,如果图表包含边缘[I J],然后它可以包含反向边缘[j i]只有在重量的时候[I J]是零和/或重量[j i]是零。
[I J]
[j i]
通过将节点的多余流量推向其邻居然后重新标记节点来计算最大流量。
例子:mf = maxflow(g,'a','d','augmentpath')
mf = maxflow(g,'a','d','augmentpath')
最大流量,作为标量返回。
流动的图表,作为a返回dig目的。GF.包含与之相同的节点G,但只包含那些边缘G这是一个非零流。
最小剪切源节点ID,作为标量节点索引,节点指数向量,字符向量节点名称或包含节点名称的字符向量的单元数组。
如果S.和T.指定数字节点索引,然后CS和CT.还包含节点索引。
如果S.和T.指定节点名称,然后指定节点名称CS和CT.还包含节点名称。
最小剪切目标节点ID,作为标量节点索引,节点指数向量,字符向量节点名称或包含节点名称的字符向量的单元数组。
在最大流量的背景下,图中的边缘被认为具有一个容量由边缘重量表示。边缘的容量是可以通过该边缘的流量。因此,图中两个节点之间的最大流动最大化了从源节点的流量的量,S.,到目标节点,T.,基于连接边缘的容量。
最小剪切将定向图节点分为两组,CS和CT.,使得所有边缘连接的权重的总和CS和CT.(切割的重量)最小化。最小切割的重量等于最大流量值,MF.。
参赛作品CS和CT.表示节点G与节点相关联S.和T., 分别。CS和CT.满足numel(cs)+ numel(ct)= numnodes(g)。
numel(cs)+ numel(ct)= numnodes(g)
dig|图形
您单击了与此MATLAB命令对应的链接:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。金宝app
选择一个网站,以便在可用的地方进行翻译的内容,并查看本地活动和优惠。根据您的位置,我们建议您选择:。
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。
联系您当地的办公室
立即获得审判