Hi Tiago, I was puzzled by some results of my tests failing when compared to subgraph_isomorphism. Finally I've narrowed it down to a (fairly) small example: ##### from graph_tool.all import * sub = Graph() sub.add_vertex(3) sub.add_edge(sub.vertex(0), sub.vertex(1)) sub.add_edge(sub.vertex(0), sub.vertex(2)) G = Graph() G.add_vertex(4) G.add_edge(G.vertex(0), G.vertex(1)) G.add_edge(G.vertex(0), G.vertex(2)) G.add_edge(G.vertex(1), G.vertex(2)) G.add_edge(G.vertex(3), G.vertex(2)) G.add_edge(G.vertex(1), G.vertex(3)) vmap, emap = subgraph_isomorphism(sub, G, random=False) for e in G.edges(): print G.edge_index[e], e for vm, em in zip(vmap, emap): print vm.a, em.a G.add_vertex() G.add_edge(G.vertex(1), G.vertex(4)) vmap, emap = subgraph_isomorphism(sub, G, random=False) for e in G.edges(): print G.edge_index[e], e for vm, em in zip(vmap, emap): print vm.a, em.a ##### We search for sub, 0 --> 1 \ \ -> 2 G first looks like this: 0 --> 1 --> 3 \ | / \ v / -> 2 <- when subgraph_isomorphism gets both occurrences correctly. But after adding a link (1, 4), it gets the two new occurrences involving vertex 4, but suddenly misses the one with edges [(1,3), (1,2)]. This is with a git clone of graph-tool from last Tuesday (after the segfault fix). Also, I would be grateful for some clarification: 1) subgraph_isomorphism is supposed to deliver all (not only the induced) occurrences, right? 2) Does it give several subgraphs which are isomorphic to each other as separate occurrences or not? My tests suggest this is not consistent between different situations. 3) What is the purpose of the random=True default? It bit me badly when I first tried the function :) Thanks for your dedication to this library! Regards, Ingo