【问题标题】:Using igraph subgraph_isomorphisms to find given network motifs使用 igraph subgraph_isomorphisms 查找给定的网络主题
【发布时间】:2019-10-23 08:22:22
【问题描述】:

我正在寻找小于 5000 个节点和小于 10000 个边的图形中大小为 5 的图案。 (一切未上色)

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

我发现很多同构子图都有额外的边。有没有办法只找到具有确切给定结构的子图?使用 igraph 或 R 中的任何其他库寻找答案

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

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")

输出给你两对 (1,2) 和 (3,4),而实际上 (1,2) 的邻接矩阵看起来像

(0 1) (1 1)

这与我们正在寻找的不同

【问题讨论】:

  • 图G的子图是由G的顶点和子集形成的另一个图。即子图不需要包含连接到子图顶点的所有边
  • 对,但我正在寻找与给定图同构的子图。我最好的猜测是,我不理解同构的定义,或者这个算法做了一些奇怪的事情,但我读了这篇论文,似乎它应该在寻找确切的解决方案,所以我很困惑跨度>
  • 子图是图 G 中顶点和边的 any 子集。使用顶点 1 和 2 的示例数据:[1->2; 2->1]、[1->2]、[2->1]、[1->2; 2->1, 2->2], [1->2, 2->2], [2->1, 2->2] 都是有效的子图。这些子图会根据您的模式子图进行搜索。
  • 好的。我明白了,我错过了一个问题中的一件重要事情。我正在寻找的是图的子图,它们与外部给定的图同构。您确定的示例是具有顶点 (1, 2) 的子图,但它们不是我想要的。感谢您的评论,已更正

标签: r igraph graph-theory subgraph isomorphism


【解决方案1】:

这个问题的答案在于我正在寻找什么以及我正在寻找什么的定义。

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

此函数的作用是查找与给定图同构的图的子图。不同的是我在寻找诱导子图,而函数只给出子图,所以允许额外的边。

这正是我遇到的问题。为了处理它,我最终只是将我发现的子图的邻接矩阵与主题的邻接矩阵进行了比较。希望对某人有所帮助。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-12
      相关资源
      最近更新 更多