在python中使用networkx实现无向图的三元组普查

2024-04-28 16:52:23 发布

您现在位置:Python中文网/ 问答频道 /正文

{x是一个无向图。但是,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')])

错误:NetworkXNotImplemented: not implemented for undirected type

我知道无向图只有4个同构类(不是16个有向图)。有没有办法用networkx来计算这4个同构类的计数?在

我不局限于networkx,而且我很乐意使用其他库或其他语言接收答案。在

如果需要,我很乐意提供更多细节。在


Tags: fromimportnetworkxaddas错误notgraph
1条回答
网友
1楼 · 发布于 2024-04-28 16:52:23

与前面的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)

相关问题 更多 >