如何在 NetworkX 中找到有向路径?

How to find a directed path in NetworkX?

所以。我试图通过有向图找到路径。

我从一个包含 3 列的 Pandas 数据框开始:'Source'、'Target'、'weight.' 权重用于跟踪每个列的动作目标(它只是一个数字)。

然后我将 df 转换为边列表:

edge_list = nx.from_pandas_edgelist(df, 'Source','Target','weight')

然后为了更好的衡量,我将 this 转换为有向图(我非常有信心这是正确发生的)

directed_graph = nx.DiGraph(edge_list)

但是,每当我开始在图中搜索路径时,我都会得到无向路径。我检查并仔细检查,但如果我定义路径

path = nx.shortest_path(directed_graph,source=A,target=B,weight='weight')

返回的路径无法通过图中找到的定向路径找到。 (但是,它可以通过无向路径找到,所以我想这很重要)

您可以通过指定 create_using=nx.DiGraph()

直接创建二合字母
g = nx.from_pandas_edgelist(df, 'Source','Target','weight', create_using=nx.DiGraph())

nx.from_pandas_edgelist returns 图的实例,而不是边列表,因此您首先创建一个图,然后通过添加两个有向弧将其转换为有向图 (i,j) , (j,i) 对于每个无向边 (i,j).

示例:

>>> g=nx.from_edgelist([(1,2),(3,4)])
>>> g.edges()
EdgeView([(1, 2), (3, 4)])
>>> nx.DiGraph(g).edges()
OutEdgeView([(1, 2), (2, 1), (3, 4), (4, 3)])