提问人:user2954167 提问时间:2/26/2020 更新时间:2/26/2020 访问量:899
如何在NetworkX中找到有向路径?
How to find a directed path in NetworkX?
问:
所以。我正在尝试通过有向图查找路径。
我从一个包含 3 列的 Pandas 数据框开始:“Source”、“Target”、“weight”。权重用于跟踪每个目标的动作(它只是一个数字)。
然后我将 df 转换为边缘列表:
edge_list = nx.from_pandas_edgelist(df, '来源','目标','权重')
然后,为了更好地衡量,我将其转换为有向图(我相当确信这是正确发生的)
directed_graph = nx。二图(edge_list)
但是,每当我开始在图中搜索路径时,我都会得到无向路径。我检查并仔细检查,但是如果我定义了路径
路径 = nx.shortest_path(directed_graph,source=A,target=B,weight='weight')
无法通过遵循图中找到的有向路径找到返回的路径。(但是,可以通过遵循无方向路径找到它,所以我想这就是某种东西)
答:
2赞
abc
2/26/2020
#1
您可以通过指定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)
(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)])
评论
0赞
user2954167
2/26/2020
非常感谢。这解决了我的问题。
0赞
user2954167
2/27/2020
好的,所以跟进,因为这产生了第二个问题。现在我正在尝试查找我知道存在的路径,但 nx.has_path() 返回 False。
评论