Ami*_*ebi 2 python graph networkx
我是 Python 中的 Networkx 新手。我正在尝试选择一个节点并获取该节点上游和下游的所有节点。例如,在下图中,对于上游节点 2,我想返回节点 1、6 和 7。对于下游节点 2,我想返回 3、4、8、9 和 5。输出的顺序节点并不重要。有没有一种快速的方法将它们作为列表返回?
我假设上游/下游,这是一个有向图,你的意思是传入/传出边缘及其父母/孩子?您可以使用广度优先树搜索 ( 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]
但如果我误解了,那么您需要澄清上游/下游的含义,因为您显示的图表看起来是无向的。