我有一个如下所示的无向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
,并且很高兴使用其他库或其他语言来接收答案。
很高兴在需要时提供更多详细信息。
答案 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)