简化
将多图化简为简单图
语法
描述
指定在多条边之间进行选择的方法。边缘属性被保留。H
=简化(G
,pickmethod
)pickmethod
可以“第一”
(默认),“最后一次”
,“最小值”
,或“马克斯”
.
指定将多条边的权值组合为单个新边的权值的方法。所有其他的边属性H
=简化(G
,aggregatemethod
)G
是下降了。aggregatemethod
可以“和”
或“的意思是”
.
指定是否使用以前语法中的任何输入参数组合从图中保留或删除自循环。例如,H
=简化(___,selfloopflag
)“keepselfloops”
指定具有一个或多个自循环的节点将在简化图中具有一个自循环。
例子
简化多图为简单图
在节点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)
命令简化(G)
保留第一个重复的边。但是,可以对第二个输入指定不同的选择/组合方法。
在多条边之间进行选择的选项有:“第一”
(默认),“最后一次”
,“最小值”
,“马克斯”
.用最大的重量保持重复的边缘。
H_pick = simplify(G,“马克斯”);情节(H_pick“EdgeLabel”H_pick.Edges.Weight)
将多条边合并为一条的选项有:“和”
而且“的意思是”
.将重复的边相加以生成权重较大的单个边。
H_comb =简化(G,“和”);情节(H_comb“EdgeLabel”H_comb.Edges.Weight)
在图中保存自循环
方法在保留自循环的同时简化图“keepselfloops”
选择。
创建具有两个节点和几个自循环的多图。简化图并保留自循环。
G =图([1 1 1 1 1 1 2 2 2],[1 1 1 1 1 2 2 2 2]);情节(G)轴平等的
G =化简(G,“keepselfloops”);情节(G)轴平等的
边缘索引和重复边的计数
的第二个和第三个输出简化
获取关于合并了多少条边(以及哪些边)的信息。
创建一个具有三个节点和四条边的无向多图。
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
使用“最小值”
选择方法,并指定值“PickVariable”
随着“时间”
变量来查找每组节点之间的最快传输方式。
t =化简(G,“最小值”,“PickVariable”,“时间”);情节(t)“EdgeLabel”cellstr (t.Edges.Mode))
使用“和”
聚合方法,并指定值“AggregationVariables”
作为“成本”
计算每个连接能赚多少钱。
c =简化(G,“和”,“AggregationVariables”,“成本”);情节(c,“EdgeLabel”c.Edges.Cost)
输入参数
pickmethod
- - - - - -边缘选取法
“第一”
(默认)|“最后一次”
|“最小值”
|“马克斯”
取边方法,指定为“第一”
,“最后一次”
,“最小值”
,或“马克斯”
.边选取方法提供了一种方法,当同一两个节点之间存在多条边时,可以从多条边中选择保留哪一条。
如果方法是
“第一”
或“最后一次”
,然后简化
只保留边表中出现的第一个或最后一个边G.Edges
.如果方法是
“最小值”
或“马克斯”
,然后简化
只保留权重最小或最大的边。的重量
变量必须存在于G.Edges
,除非你使用“PickVariable”
名称-值对以不同的变量为基础进行选择。
例子:简化(G,“最后”)
aggregatemethod
- - - - - -聚合方法
“和”
|“的意思是”
聚合方法,指定为其中之一“和”
或“的意思是”
.当相同的两个节点之间有多条边时,聚合方法提供了一种将多条边合并为一条边的方法。
默认情况下,简化
只对图中的边权值求和或取平均值,并删除所有其他边属性。但是,您可以使用“AggregationVariables”
名称-值对指定数值变量G.Edges
保存:保存和聚集
例子:简化(G, '和')
selfloopflag
- - - - - -切换以保持自循环
“omitselfloops”
(默认)|“keepselfloops”
切换以保持自循环,指定为:
“omitselfloops”
-从图中移除所有的自循环。这是默认设置。“keepselfloops”
-具有一个或多个自循环的节点在简化图中只有一个自循环。
例子:简化(G,“和”,“keepselfloops”)
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:H = simplify(G,'sum','AggregationVariables',{'Var1' 'Var2'})
PickVariable
- - - - - -变量的基础上的边缘选择
“重量”
(默认)|变量名|数字索引
变量的基本边选择,指定为逗号分隔的对,由“PickVariable”
和变量名或数字索引。使用此名称-值对选择中的边缘变量G.Edges
除了“重量”
与…连用“最小值”
或“马克斯”
挑选方法。简化
当相同的两个节点之间有多条边时,只保留具有所选变量最小值或最大值的边。
例子:简化(G,‘敏’,‘PickVariable’,3)
例子:简化(G,‘敏’,‘PickVariable’,‘var3’)
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
|字符
|字符串
AggregationVariables
- - - - - -要聚合的变量
“重量”
(默认)|变量名|变量名的单元格数组|字符串数组|数值向量|逻辑向量|函数处理
要聚合的变量,指定为逗号分隔的对,由“AggregationVariables”
和变量名、变量名的单元格数组、字符串数组、数字向量、逻辑向量或函数句柄。使用此名称-值对在中选择一个或多个边缘变量G.Edges
可以结合“和”
或“的意思是”
聚合方法。简化
当相同的两个节点之间有多条边时,将这些变量的值合并为一条新边的单个值。的价值“AggregationVariables”
可以是以下之一:
指定单个表变量名的字符向量
字符向量的单元格数组,其中每个元素都是表变量名
指定一个或多个变量名的字符串数组
表变量索引的向量
逻辑向量,其元素对应于表变量,其中
真正的
包括相应的变量和假
不包括它的函数句柄
G.Edges
表作为输入并返回逻辑标量,例如@isnumeric
例子:简化(G,'sum','AggregationVariables',[4 5 6])
例子:简化(G,‘意思’,‘AggregationVariables’,{“var5 var7 '})
例子:简化(G,‘意思’,‘AggregationVariables’,@isnumeric)
数据类型:单
|双
|逻辑
|function_handle
|字符
|字符串
|细胞
输出参数
H
-简化图
图
对象|有向图
对象
简化的图形,返回为图
或有向图
对象。H
在相同的两个节点之间不包含任何重复的边,如ismultigraph (H)
返回逻辑0
(假
).自循环也会被删除,除非您指定“keepselfloops”
选择。
eind
-边缘指数
向量
边索引,作为向量返回。边缘在H
这代表了边我
在G
由H.Edges (eind(我):)
.如果边缘我
在G
是被移除的自循环吗eind(我)
是0
.
ecount
-边缘计数
向量
边数,作为向量返回。ecount(我)
边的数量在吗G
对应于这条边我
在H
.
版本历史
在R2018a中介绍
另请参阅
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。