如何在python中使用networkx获取无向图中的黑社会人口普查

问题描述 投票:0回答:1

我有一个无向网络x图如下,我想打印图的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')])

错误:NetworkXNotImplemented: not implemented for undirected type

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

我不仅限于networkx,并乐意使用其他图书馆或其他语言获得答案。

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

python r networkx igraph sna
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.