我是使用Python的Networkx的新手。我正在尝试选择一个节点,并获取该节点上游和下游的所有节点。例如,在下图中,对于上游节点2,我希望返回节点1、6和7。对于下游节点2,我希望返回3、4、8、9和5。输出节点的顺序并不重要。有没有一种快速的方法将它们作为列表返回?

发布于 2020-01-31 05:44:40
我假设上游/下游,这是一个有向图,你指的是传入/传出的边及其父/子?您可以使用广度优先树搜索(bfs_tree)。
请参阅:https://networkx.github.io/documentation/stable/reference/algorithms/traversal.html
示例:
g = nx.DiGraph()
g.add_edges_from([
(7,6),
(6,2),
(6,1),
(1,2),
(2,4),
(2,3),
(3,4),
(4,8),
(4,9),
(3,5)
])
upstream = [n for n in nx.traversal.bfs_tree(g, 2, reverse=True) if n != 2]
downstream = [n for n in nx.traversal.bfs_tree(g, 2) if n != 2]但如果我误解了,那么您需要澄清您所说的上游/下游是什么意思,因为您显示的图看起来是无方向的。
https://stackoverflow.com/questions/59993941
复制相似问题