1

该问题在http://ask.sagemath.org/question/2612/motifs-and-subgraphs中得到了正确回答

我正在计算随机有向网络中 3 基元(连接子图的 3 节点等容类)的数量。这个有13个。一个是,例如 S1={1 -> 2, 2 -> 3} 和另一个 S2={1 -> 2, 2 -> 3, 1 -> 3}:它们是两个不同的主题,我不会当我真正找到 S2 时,不计算 S1。问题是 S1 在 S2 中,因此 subgraph_search() 在每个 S2 中找到一个 S1 并且所有相关函数都继承了问题(错误计数,错误迭代器......)。

知道如何解决这个问题吗?类似的事情会发生在 4 个节点的图案上,依此类推......我可以在计算出 S2 之后从图中删除它们,但这确实是一个可怕的技巧(如果我还想计算 4 个图案,那就很危险了) .

我使用的代码如下:

import numpy
M1 = DiGraph(numpy.array([[0,1,0],[0,0,1],[0,0,0]])) #first motif
M5 = DiGraph(numpy.array([[0,1,1],[0,0,1],[0,0,0]])) #second motif
g = digraphs.RandomDirectedGNP(20,0.1) #a random network
l1 = []
for p in g.subgraph_search_iterator(M1): #search first motif
  l1.append(p) #make a list of its occurences
l5 = []
for p in g.subgraph_search_iterator(M5): #the same for the second motif
  l5.append(p)
4

1 回答 1

1

诀窍是在http://ask.sagemath.org/question/2612/motifs-and-subgraphs中正确回答的 subgraph_search() 函数中包含选项induced=true 。

于 2013-05-31T04:20:16.133 回答