我有一个包含许多子图的图。我有一些边在两个方向上连接两个节点,即 A-->B 和 B-->A。双向性很重要,因为它表示我们不知道是 A 转到 B 还是 B 转到 A,而且我们没有简单的方法来确定哪个是正确的。
我想知道有多少个子图,并将每个子图中的边输出到 Pandas DataFrame。但是,NetworkX 仅在提供的 connected_components_subgraph(G) 函数中接收无向图。当我将图转换为无向图时,我可以使用 connected_components_subgraph() 来获取每条边中的节点,但我失去了边的方向性。
有没有一种简单的方法可以实现我想要实现的目标?
最佳答案
也许您正在寻找weakly connected components ?
该算法将边视为无向边,并返回该图中的连通分量。
In [1]: import networkx as nx
In [2]: G = nx.DiGraph([(1,2),(2,1),(3,4)])
In [3]: for w in nx.weakly_connected_component_subgraphs(G):
...: print(w.edges())
...:
[(1, 2), (2, 1)]
[(3, 4)]
关于python - 如何在不转换为无向图的情况下在有向图中查找子图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18643789/