我有两个无向图。
require (igraph)
gsmall <- graph(c(1,3,5,8,3,5), directed = F)
gbig <- graph(c(3, 5, 3, 10, 4, 5, 4, 10, 5, 7, 5, 8, 5, 9, 7, 10, 8, 10, 9, 10), directed = F)
现在我想知道是否gbig
包含一个与gsmall
. 或者准确地说,我想要一个特定的映射(如果存在)。
在igraph
R 包中,这可以通过subgraph_isomorphisms
函数来完成。问题是这个函数给了我所有的同构,这在这个小例子中已经很昂贵了。
所以我尝试graph.subisomorphic.lad(gsmall, gbig, all.maps =F)
了这给了我
$iso
[1] TRUE
$map
[1] 3 1 10 6 9 8 4 5
$maps
NULL
因此。据说$map
包含我需要的信息。但我不知道如何使用这些数字来生成节点的重命名,gsmall
这样重命名的版本gsmall
实际上是gbig
. 我有同样的翻译问题,subgraph_isomorphisms
根据帮助返回一个“顶点序列列表,对应于从第一个图到第二个图的所有映射”,我不明白。
谁能告诉我如何获得我想要的重命名?如果我假设$map
结果的条目graph.subisomorphic.lad(gsmall, gbig, all.maps =F)
包含我需要的内容是正确的,那么我如何才能从那时起进行重命名?如果不是如何以另一种方式实现它?
提前致谢。