主要内容

简化

将多图化简为简单图

描述

例子

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

例子

H=简化(Gpickmethod指定在多条边之间进行选择的方法。边缘属性被保留。pickmethod可以“第一”(默认),“最后一次”“最小值”,或“马克斯”

例子

H=简化(Gaggregatemethod指定将多条边的权值组合为单个新边的权值的方法。所有其他的边属性G是下降了。aggregatemethod可以“和”“的意思是”

例子

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

H=简化(___名称,值使用一个或多个名称-值对参数指定其他选项。例如,您可以指定“PickVariable”还有一个变量G.Edges将该变量与“最小值”“马克斯”选择方法。

例子

Heindecount简化,简化___另外返回边缘索引eind边数ecount

  • H.Edges (eind(我):)边缘在吗?H这代表了边G

  • ecount (j)边的数量在吗G对应于这条边jH

例子

全部折叠

在节点1和节点2之间创建一个带有多条边的加权无向多图。

G =图([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

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

创建一个加权多图。在这个图中,5条边出现在节点3和节点4之间,但这些边具有随机权值。查看边缘表,绘制图形以供参考。

G = graph([1 2 3 3 3 3 3 3 3],[2 3 1 4 4 4 4 4 4],randi(10,1,8));G.Edges
ans =8×2表EndNodes权重________ ______ 1 2 9 1 3 2 2 3 10 3 4 10 3 4 7 3 4 1 3 4 3 3 4 6
情节(G,“EdgeLabel”G.Edges.Weight)

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

命令简化(G)保留第一个重复的边。但是,可以对第二个输入指定不同的选择/组合方法。

在多条边之间进行选择的选项有:“第一”(默认),“最后一次”“最小值”,“马克斯”.用最大的重量保持重复的边缘。

H_pick = simplify(G,“马克斯”);情节(H_pick“EdgeLabel”H_pick.Edges.Weight)

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

将多条边合并为一条的选项有:“和”而且“的意思是”.将重复的边相加以生成权重较大的单个边。

H_comb =简化(G,“和”);情节(H_comb“EdgeLabel”H_comb.Edges.Weight)

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

方法在保留自循环的同时简化图“keepselfloops”选择。

创建具有两个节点和几个自循环的多图。简化图并保留自循环。

G =图([1 1 1 1 1 1 2 2 2],[1 1 1 1 1 2 2 2 2]);情节(G)轴平等的

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

G =化简(G,“keepselfloops”);情节(G)轴平等的

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

的第二个和第三个输出简化获取关于合并了多少条边(以及哪些边)的信息。

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

G =图([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 =具有属性的图:边:[3x1表]节点:[3x0表]
ei =4×11 1 2 3
电子商务=3×12 1 1

ei(我)简化图中的边代表边吗在旧图中。因为前两条边是重复的,Ei (1) = Ei (2) = 1.同时,Ec (1) = 2,因为新图中有两条边对应于旧图中的边1。

方法简化多图“PickVariable”而且“AggregationVariables”名称-值对。

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

G = graph([1 1 1 1 1 1 2 2],[2 2 2 3 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 75 1.5 10 8 1.75 11 9]';G.Edges
ans =9×4表EndNodes模式成本时间  ___________________________________ _____ ____ ____ {' 纽约'}{}“波士顿”空气400 1{“纽约”}{}“波士顿”培训80名7{“纽约”}{}“波士顿”巴士40 5{“纽约”}{华盛顿特区Air 250 1.5{'纽约'}{'华盛顿特区100号列车10{纽约}{华盛顿特区75路8{波士顿}{华盛顿特区Air 325 1.75{'波士顿'}{'华盛顿特区第150次列车11号{'波士顿'}{'华盛顿特区100路公共汽车

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

情节(G,“EdgeLabel”cellstr (G.Edges.Mode),“线宽”G.Edges.Time. /分钟(G.Edges.Time),“EdgeCData”G.Edges.Cost) colorbar

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

使用“最小值”选择方法,并指定值“PickVariable”随着“时间”变量来查找每组节点之间的最快传输方式。

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

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

使用“和”聚合方法,并指定值“AggregationVariables”作为“成本”计算每个连接能赚多少钱。

c =简化(G,“和”“AggregationVariables”“成本”);情节(c,“EdgeLabel”c.Edges.Cost)

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

输入参数

全部折叠

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

例子:G =图(1,2)

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

取边方法,指定为“第一”“最后一次”“最小值”,或“马克斯”.边选取方法提供了一种方法,当同一两个节点之间存在多条边时,可以从多条边中选择保留哪一条。

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

  • 如果方法是“最小值”“马克斯”,然后简化只保留权重最小或最大的边。的重量变量必须存在于G.Edges,除非你使用“PickVariable”名称-值对以不同的变量为基础进行选择。

例子:简化(G,“最后”)

聚合方法,指定为其中之一“和”“的意思是”.当相同的两个节点之间有多条边时,聚合方法提供了一种将多条边合并为一条边的方法。

默认情况下,简化只对图中的边权值求和或取平均值,并删除所有其他边属性。但是,您可以使用“AggregationVariables”名称-值对指定数值变量G.Edges保存:保存和聚集

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

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

  • “omitselfloops”-从图中移除所有的自循环。这是默认设置。

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

例子:简化(G,“和”,“keepselfloops”)

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子: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|字符|字符串|细胞

输出参数

全部折叠

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

边索引,作为向量返回。边缘在H这代表了边GH.Edges (eind(我):).如果边缘G是被移除的自循环吗eind(我)0

边数,作为向量返回。ecount(我)边的数量在吗G对应于这条边H

版本历史

在R2018a中介绍

另请参阅

||

Baidu
map