如果您从 R 中使用 igraph,请使用此选项
compose {igraph} | R 文档 |
两个图的关系组合。
compose(g1, g2, byname = "auto")
g1 |
第一个输入图。 |
g2 |
第二个输入图。 |
byname |
一个逻辑标量,或字符标量 |
compose
创建两个图的关系组合。新的图仅当存在一个顶点 c,使得边 (a,c) 包含在第一个图中,并且 (c,b) 包含在第二个图中时,才包含边 (a,b)。相应的运算符是 %c%。
如果其中一个输入图是有向图,而另一个是无向图,则该函数会报错。
如果byname
参数是TRUE
(或auto
且所有图都已命名),则操作基于符号顶点名称执行。否则,使用数字顶点 ID。
compose
保留两个图的属性。所有图、顶点和边属性都复制到结果中。如果一个属性存在于多个图中,并导致名称冲突,则通过添加后缀来重命名该属性:_1、_2 等。
如果操作基于符号顶点名称执行,则特别处理name
顶点属性。在这种情况下,name
必须存在于两个图中,并且不会在结果图中重命名。
请注意,结果图中的一条边对应于输入中的两条边,一条在第一个图中,一条在第二个图中。此映射不是单射的,结果中的几条边可能对应于第一个(和/或第二个)图中的同一条边。结果图中的边属性会相应更新。
另请注意,如果对于结果中的一条边 (a,c),存在多种在 g1 中找到边 (a,b) 和在 g2 中找到边 (b,c) 的方式,则该函数可能会生成多重图。如果您想摆脱多条边,请参阅simplify
。
如果 g1 和 g2 中分别存在边 (a,b) 和 (b,a),则该函数可能会创建环边,则 (a,a) 包含在结果中。如果您想摆脱自环,请参阅simplify
。
一个新的图对象。
Gabor Csardi csardi.gabor@gmail.com
g1 <- make_ring(10)
g2 <- make_star(10, mode="undirected")
gc <- compose(g1, g2)
print_all(gc)
print_all(simplify(gc))