首页 > 解决方案 > networkx 库的函数 dfs_edges 找不到所有边

问题描述

我想使用dfs_edgesnetworkx库找到源节点的所有可达边,但它无法完全找到所有边,我的代码是:

import networkx as nx
from networkx import dfs_edges

nodes = [0,1,2,3,4]
edges = [(0,1),(0,2),(1,2),(1,3),(2,3),(0,4)]
DG = nx.DiGraph()
DG.add_nodes_from(nodes)
DG.add_edges_from(edges)

print(list(dfs_edges(DG,1)))

结果是[(1, 2), (2, 3)],但(1,3)也是 node 的可达边1,为什么结果不包含它?

标签: pythonnetworkx

解决方案


使用 edge_dfs 而不是 dfs_edges 将解决这个问题。

  • edge_dfs(G, source) 继续,直到它访问了源可到达的每条边。

  • dfs_edges(G, source) 访问完源节点可以到达的所有节点后停止。

    import networkx as nx
    from networkx import edge_dfs
    
    nodes = [0,1,2,3,4]
    edges = [(0,1),(0,2),(1,2),(1,3),(2,3),(0,4)]
    DG = nx.DiGraph()
    DG.add_nodes_from(nodes)
    DG.add_edges_from(edges)
    
    print(list(edge_dfs(DG,1)))  # [(1, 2), (2, 3), (1,3)]
    

推荐阅读