使用igraph subgraph_isomorphisms查找给定的网络图案

时间:2019-06-07 20:31:16

标签: r igraph graph-theory subgraph isomorphism

我正在寻找节点少于5000个,边少于10000个的图形中大小为5的主题。 (所有未着色的东西)

为此,我使用方法vf2将igraph库中提供的函数用于R subgraph_isomorphisms(请参见下面的示例)。我使用邻接矩阵来生成子图,并使用边列表来生成图本身。

我发现许多同构子图具有额外的优势。有什么方法只能找到具有给定结构的子图吗?使用igraph或R中的任何其他库寻找答案

请参见下面的可重现示例(如果您仅在纸上绘制此邻接矩阵给出的图形,则查看此示例会更容易)

InputStyle

当实际上(1,2)的邻接矩阵看起来像

时,输出为您提供两对(1,2)和(3,4)

library(igraph) subgraph <- matrix( data = c(0, 1, 1, 0), ncol = 2) graph <- matrix( data = c(0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 0), ncol = 4) subgraph <- graph_from_adjacency_matrix(subgraph, mode = "directed", weighted = T, diag = T) graph <- graph_from_adjacency_matrix(graph, mode = "directed", weighted = T, diag = T) subgraph_isomorphisms(subgraph, graph, method = "vf2")

与我们寻找的人不同

2 个答案:

答案 0 :(得分:1)

这个问题的答案是我正在寻找的东西和正在寻找的东西的定义。

我正在寻找的是大小为5的网络图案。当我从图论的角度寻找网络图案时,这意味着我正在寻找具有给定邻接矩阵的诱导子图。

此函数的作用是查找与给定图同构的图子图。区别在于我一直在寻找诱导子图,而该函数只是给出子图,因此允许额外的边。

那正是我遇到的问题。为了解决这个问题,我最终只是比较了发现的子图与主题的子图的邻接矩阵。希望对别人有帮助。

答案 1 :(得分:0)

添加到之前的评论中,我还注意到,当我尝试在四个顶点的完整图中找到类型为 210(2 个相互边和 1 个不对称)的同构三元组时,该函数返回“True”。解决方法是添加:

subgraph_isomorphisms(subgraph, graph, method = "vf2", **induced = TRUE**)