主要内容

简化

将多重素减少到简单的图表

描述

例子

H=简化(G返回一个没有多个边或自循环的图。当同一两个节点之间出现多条边时,只有第一条边(如G.Edges.)保存。边缘属性得以保留。

例子

H=简化(GPickmethod.指定在多个边之间进行选择的方法。边缘属性得以保留。Pickmethod.'第一的'(默认),'最后的'“最小值”,或'最大限度'

例子

H=简化(Gaggregatemethod指定将多条边的权值合并为一条新边的权值的方法。所有其他的边属性G是下降了。aggregatemethod'和''意思'

例子

H=简化(___selfleopflag.指定是否使用前面语法中的任何输入参数组合从图中保留或删除自循环。例如,“keepselfloops”指定具有一个或多个自循环的节点将在简化图中具有一个自循环。

H=简化(___名称,价值指定具有一个或多个名称值对参数的其他选项。例如,您可以指定“PickVariable”和一个变量G.Edges.将该变量与“最小值”'最大限度'选择方法。

例子

[Heecount] =简化(___另外返回边指数e和边缘数目ecount

  • H.Edges (eind(我):)是边缘H代表边缘一世G

  • ecount (j)是边缘的数量G对应于边jH

例子

全部收缩

使用节点1和节点2之间的多个边缘创建加权的无向多角形。

G = graph([1 1 1 1 2 3],[2 2 2 3 3 4], 1:6);G.Edges.
ans =6×2表EndNodes Weight ________ ______ 1 2 1 1 2 2 1 2 3 1 3 4 2 3 5 3 4 6

将多重图简化为简单图,使节点1和节点2之间只有一条边。简化将第一个边缘保持在这两个节点之间,G.edges(1,:),并放弃其他人。

G =简化(G);G.Edges.
ans =4×2表EndNodes Weight ________ ______ 1 2 1 1 3 4 2 3 5 3 4 6

使用第二个输入简化选择在多个边之间选择或将多个边合并为一个的方法。

创建加权多重图。在这个图中,节点3和节点4之间有5条边,但这些边的权值是随机的。查看边表,并绘制图表以供参考。

G = graph([1 2 3 3 3 3 3 3 3],[2 3 1 4 4 4 4],randi(10,1,8));G.Edges.
ans =8×2表EndNodes Weight ________ ______ 1 2 9 1 3 2 2 3 10 3 4 10 3 4 7 3 4 1 3 4 3 4 6
绘图(g,'Edgelabel'G.Edges.Weight)

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

命令简化(G)保留第一个重复的边。但是,您可以使用第二个输入指定不同的pick/combine方法。

选择多个边之间的选项是:'第一的'(默认),'最后的'“最小值”, 和'最大限度'。保持重复边的最大权重。

h_pick =简化(g,'最大限度');绘图(H_PICK,'Edgelabel',h_pick.edges.weight)

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

将多条边合并为一条的选项有:'和''意思'。将重复的边相加,产生权重较大的单条边。

h_comb =简化(g,'和');情节(H_comb'Edgelabel',h_comb.edges.weight)

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

简化图形,同时使用该图形保留自循环“keepselfloops”选择。

创建一个具有两个节点和几个自循环的multigraph。简化图形并保持自循环。

G =曲线图([1 11 1 11 11 11 2 2 2],[111 1 11 2 2 2 2 2 2 2]);绘图(g)轴平等的

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

g =简化(g,“keepselfloops”);绘图(g)轴平等的

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

使用的第二个和第三个输出简化获取有关组合数量(以及哪个)边缘的信息。

创建一个有三个节点和四条边的无向多图。

图([1 1 1 2],[2 2 3 3]);G.Edges.
ans =4×1表EndNodes ________ 1 2 1 2 1 3 2 3

简化图形并指定三个输出以获取有关组合边缘的其他信息。

(G, ei, ec) =简化(G)
G = graph with properties: Edges: [3x1 table] Nodes: [3x0 table]
ei =4×11 1 2 3
EC =3×12 1 1

ei(我)简化图中的边是否表示边一世在旧的图表中。因为前两条边是重复的,Ei (1) = 1。还,电子商务(1)= 2,因为在旧图中对应于边缘1的新图中有两个边。

演示如何使用“PickVariable”“AggregationVariables”名称-值对。

创建一个多图,其中节点代表位置,边代表运输方式。边缘的属性反映了每种运输方式的成本和时间。预览边表。

G = graph([1 1 1 1 1 1 2 2],[2 2 2 3 3 3 3],[],{'纽约'“波士顿”'华盛顿特区。'});G.Edges.Mode = categorical([1 2 3 1 2 3 1 2 3],[1 2 3],{“空气”“火车”'公共汽车'})';G.edges.Cost = [400 80 40 250 100 75 325 150 100]'G.edges.time = [1 7 5 1.5 10 8 1.75 11 9]';G.Edges.
ans =9×4表EndNodes模式成本时间  ___________________________________ _____ ____ ____ {' 纽约'}{}“波士顿”空气400 1{“纽约”}{}“波士顿”培训80名7{“纽约”}{}“波士顿”巴士40 5{“纽约”}{华盛顿特区{'纽约'}{'华盛顿特区100号火车10号纽约华盛顿特区75路8号波士顿华盛顿特区}航空325 1.75{'波士顿'}'华盛顿特区150号火车11号{'波士顿'}{'华盛顿特区9 . i ' m not

绘制图表以供参考。在每条边上标注运输方式,使边线宽度与时间成正比,每条边的颜色与成本成正比。

绘图(g,'Edgelabel'cellstr (G.Edges.Mode),“线宽”,g.edges.time。/ min(g.edges.time),'edgecdata'G.Edges.Cost) colorbar

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

使用“最小值”选择方法并指定值“PickVariable”作为'时间'变量找到每组节点之间的最快传输模式。

t =简化(G,“最小值”“PickVariable”'时间');情节(t)'Edgelabel'cellstr (t.Edges.Mode))

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

使用'和'的值“AggregationVariables”作为'成本'计算每次连接能赚多少钱。

c =简化(g,'和'“AggregationVariables”'成本');情节(c,'Edgelabel'c.Edges.Cost)

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

输入参数

全部收缩

输入图形,指定为图形dig对象。使用图形创建一个无向图形或dig创建定向图形。

例子:图G =(1、2)

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

边缘拣选方法,指定为'第一的''最后的'“最小值”,或'最大限度'。边缘拣选方法提供了一种方法来选择多个边缘存在多个边缘之间的多个边缘中的哪个方法。

  • 如果方法是'第一的''最后的', 然后简化只保留边表中出现的第一条或最后一条边G.Edges.

  • 如果方法是“最小值”'最大限度', 然后简化仅保留最小或最大重量的边缘。这重量变量必须存在G.Edges.,除非你使用“PickVariable”名称值对基于不同变量的选择。

例子:简化(g,'last')

聚合方法,指定为其中之一'和''意思'。聚合方法提供了在同一两个节点之间存在多于一个边的边沿将多个边缘组合成单个边缘的方法。

默认情况下,简化只对图中的边的权值进行求和或取平均,并去掉所有其他边的属性。但是,你可以使用“AggregationVariables”名称-值对,以指定在G.Edges.保存和聚集。

例子:简化(G, '和')

切换以保留自循环,指定为:

  • 'omitselfloops'-从图形中删除所有自循环。这是默认值。

  • “keepselfloops”-具有一个或多个自循环的节点在简化图中只有一个自循环。

例子:简化(g,'sum','severseyloops')

名称值对参数

指定可选的逗号分离对名称,价值参数。的名字是参数名称和价值为对应值。的名字必须出现在引号内。您可以以任何顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:H = simplify(G,'sum','AggregationVariables',{'Var1' ' 'Var2'})

变量的基础边选择,指定为逗号分隔的对,由“PickVariable”以及变量名或数字索引。中使用此名称-值对选择边缘变量G.Edges.以外'重量'与之使用“最小值”'最大限度'挑选方法。简化当同一两个节点之间有几条边时,只保留所选变量的最小值或最大值的边。

例子:简化(G,‘敏’,‘PickVariable’,3)

例子:简化(G,‘敏’,‘PickVariable’,‘var3’)

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|字符|字符串

要聚合的变量,指定为逗号分隔的对,由“AggregationVariables”和变量名称,变量名称,字符串数组,数字矢量,逻辑向量或函数句柄的单元格数组。使用此名称值对选择一个或多个边缘变量G.Edges.这可以与之相结合'和''意思'聚合方法。简化当同一两个节点之间有多条边时,将这些变量的值合并为一条新边的单个值。的价值“AggregationVariables”可以是以下情况之一:

  • 指定单个表变量名的字符向量

  • 每个元素是表变量名称的字符向量的单元格数组

  • 字符串数组指定一个或多个变量名称

  • 表可变指数矢量

  • 元素对应于表变量的逻辑向量,其中真的包括相应的变量和错误的不包括它

  • 的函数句柄G.Edges.表作为输入,并返回逻辑标量,例如@isnumeric

例子:简化(g,'sum','aggregationvariables',[4 5 6])

例子:简化(G,‘意思’,‘AggregationVariables’,{“var5 var7 '})

例子:简化(G,‘意思’,‘AggregationVariables’,@isnumeric)

数据类型:||逻辑|function_handle.|字符|字符串|细胞

输出参数

全部收缩

简化的图,返回为图形dig对象。H在相同的两个节点之间不包含任何重复的边,这样Isumultigraph(h)返回逻辑0.错误的).自循环也被删除,除非您指定“keepselfloops”选择。

作为向量返回的边索引。的边缘H代表边缘一世G是由H.Edges (eind(我):)。如果边缘一世G那么,是否删除了一个自循环eind(我)0.

边计数,作为向量返回。ecount(我)是边缘的数量G对应于边一世H

也可以看看

||

在R2018A介绍