使用 networkx 生成有向图的生成树

Gio*_*elm 5 python graph subgraph minimum-spanning-tree networkx

我在 networkx 中有一个有向图 G,我想得到它的最小生成树。我愿意:

 T = nx.algorithms.minimum_spanning_tree( G.to_undirected()  )
Run Code Online (Sandbox Code Playgroud)

这是无方向的,我想恢复方向,但我不知道该怎么做。我试过:

G[T.edges()]
Run Code Online (Sandbox Code Playgroud)

最后一行看起来非常pythonic,但这不是networkx的工作方式,显然......有谁知道怎么做?

换句话说:在给定(无向)边的情况下,如何获得有向树的子图?

Fre*_*Foo 5

您可以通过简单的理解G获得 MST 中出现的边T

E = set(T.edges())  # optimization
[e for e in G.edges() if e in E or reversed(e) in E]
Run Code Online (Sandbox Code Playgroud)

然后,您可以从中构建一个新图。

  • An 保持权重:`[(i,o,w) for i,o,w in G.edges_iter(data=True) if ((i,o) in T.edges() or (o,i) in T .edges())]` (2认同)