python で有向ネットワークの三角形の取り出し。
test.net
1 2
2 3
3 1
1 5
5 1
import networkx as nx G=nx.read_edgelist("test.net",create_using=nx.DiGraph()); for i in G.nodes(): outs=G.successors(i); ins=G.predecessors(i); for j in outs: for k in ins: if G.has_edge(j,k): a=[i,j,k]; a.sort(); if a[0]==i: print i,j,k if a[0]==j: print j,k,i if a[0]==k; print k,i,j
出力
1 2 3
1 2 3
1 2 3