问题在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)
答案 0 :(得分:1)
诀窍是在http://ask.sagemath.org/question/2612/motifs-and-subgraphs中正确回答subgraph_search()函数中包含选项indu = true。