匹配 2 个图中的边

Matching edges in 2 graphs

我有 2 个图表,我们称它们为 g1 和 g2。图 g2 具有与 g1 相同的结构,但包含 g1 中不存在的新边。我必须找到这些边缘。

g1 <- graph(edges=c(1,2,2,3,1,3,3,4,2,4,1,5), n=5, directed=FALSE)
g2 <- graph(edges=c(1,2,2,3,1,3,3,4,2,4,1,5,3,5), n=5, directed=FALSE)

在这种情况下,我正在寻找的是边缘 3--5。

到目前为止,我想到了使用 g1 的补码,然后将其与 g2 的边进行匹配以找到这些新边。问题是我的语法有问题。 (R 新手)

g1_complement <- complementer(g1)

现在我只想获取 g2 中但不在 g1 中的新边。我正在考虑这样做。

E(g1_complement)[E(g1_complement) %in% E(g2)]

我原以为只得到新边,但是 returns 所有 g1_complement 边。我只使用 igraph 作为库。

请使用 igraph 库中的 difference() 函数找到以下一种可能的解决方案。

Reprex

library(igraph)

g1 <- graph(edges=c(1,2,2,3,1,3,3,4,2,4,1,5), n=5, directed=FALSE)
g2 <- graph(edges=c(1,2,2,3,1,3,3,4,2,4,1,5,3,5), n=5, directed=FALSE)


difference(g2, g1)
#> IGRAPH 9fb5e8c U--- 5 1 -- 
#> + edge from 9fb5e8c:
#> [1] 3--5

reprex package (v2.0.1)

于 2022-01-30 创建

我们可以试试

> E(g2)[!E(g2) %in% E(g1)]
+ 1/7 edge from 9fdc2d2:
[1] 3--5

> E(g2)[setdiff(E(g2), E(g1))]
+ 1/7 edge from 9fdc2d2:
[1] 3--5