python - 如何在不转换为无向图的情况下在有向图中查找子图?

标签 python graph networkx

我有一个包含许多子图的图。我有一些边在两个方向上连接两个节点,即 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/

相关文章:

jquery - 如何在 Highstock(测试版)中获取连续图表

graph - 使节点更加分离(图形可视化)

python - 如何以随机顺序打印列表中的单词,以便每个单词只打印一次(使用Python)

python - 如何从左上角到右下角排列坐标?

python - python是否重复计算函数的值在一个公式中出现多次

java - 持久化图形数据 (Java)

python - 我如何向后循环遍历字典列表,直到找到特定的键值?

使用 DFS 计算 SCC

python - 使用 Networkx 绘制格子和图形

python - networkx 没有给出加权图的所有最短路径