如何在NetworkX中查找定向路径?

2024-04-26 14:30:06 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我从一个有3列的熊猫数据框开始:“源”、“目标”、“权重”。权重用于跟踪每个目标的动作(只是一个数字)

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

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

然后,为了更好地度量,我将这个转换成一个有向图(我相当确信这是正确的)

directed_graph = nx.DiGraph(edge_list)

然而,每当我开始在图中搜索路径时,我得到的是无向路径。我检查了又检查了,但是如果我定义了一个路径

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

按照图中找到的定向路径,无法找到返回的路径。(然而,它可以通过沿着无向路径找到,所以我想这是个问题)


Tags: 数据path路径目标df数字边缘list
1条回答
网友
1楼 · 发布于 2024-04-26 14:30:06

您可以通过指定create_using=nx.DiGraph()直接创建有向图

g = nx.from_pandas_edgelist(df, 'Source','Target','weight', create_using=nx.DiGraph())

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

例如:

>>> 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)])

相关问题 更多 >