如何在python中使用networkx在无向图中进行三合会普查

时间:2019-02-17 06:49:32

标签: python r networkx igraph sna

我有一个如下所示的无向networkx图,我想打印该图的/home/ohad/Android/Sdk/platform-tools/adb。但是,triad census不支持无向图。

nx.triadic_census(G)

错误:import networkx as nx G = nx.Graph() G.add_edges_from( [('A', 'B'), ('A', 'C'), ('D', 'B'), ('E', 'C'), ('E', 'F'), ('B', 'H'), ('B', 'G'), ('B', 'F'), ('C', 'G')])

我知道,无向图只有4个同构类(有向图没有16种)。是否可以使用networkx获取这4个同构类的计数?

我不仅限于NetworkXNotImplemented: not implemented for undirected type,并且很高兴使用其他库或其他语言来接收答案

很高兴在需要时提供更多详细信息。

1 个答案:

答案 0 :(得分:1)

与您先前的post类似的解决方案:遍历所有三合会并标识其所属的类。由于类仅是三个节点之间的边数,因此请计算3个节点的每种组合的边数。

from itertools import combinations

triad_class = {}
for nodes in combinations(G.nodes, 3):
    n_edges = G.subgraph(nodes).number_of_edges()
    triad_class.setdefault(n_edges, []).append(nodes)