0

下面的代码使用R的igraph包生成两个图,G1和G2,应该是同构的。第一张支票声称他们不是,但第二张说他们是。唯一的区别是我将第一个 e1 中的 6 替换为第二个 e1 中的 4。

library(igraph)
e1 = c(1,2,1,5,2,1,2,5,2,6,3,5,5,1,5,2,5,3,5,6,6,2,6,5)
e2 = c(1,2,1,3,1,4,1,5,2,1,2,5,3,1,3,5,4,1,5,1,5,2,5,3)
G1 = make_graph(e1)
G2 = make_graph(e2)
isomorphic(G1,G2)

e1 = c(1,2,1,5,2,1,2,5,2,4,3,5,5,1,5,2,5,3,5,4,4,2,4,5)
G1 = make_graph(e1)
isomorphic(G1,G2)

当我画出前两张图时,我很清楚它们实际上是同构的,如下图所示。

两个同构图

为什么 R 包 igraph 的函数同构给出不正确的结果?是否知道在某些情况下它不起作用?

4

1 回答 1

1

我认为您已经被数字和字符向量处理的差异所困扰igraph::make_graph

library(igraph)
e1 = as.character(c(1,2,1,5,2,1,2,5,2,6,3,5,5,1,5,2,5,3,5,6,6,2,6,5))
e2 = as.character(c(1,2,1,3,1,4,1,5,2,1,2,5,3,1,3,5,4,1,5,1,5,2,5,3))
G1 = make_graph(e1)
G2 = make_graph(e2)
isomorphic(G1,G2)
plot(G1); plot(G2)
#[1] TRUE

"isolates" 参数在 的数字参数中被忽略make_graph,并且似乎数字参数会导致假定值范围内的所有值都将被包括在内。

于 2018-04-11T22:15:56.257 回答