python - 如何在 NetworkX 中找到有向路径?
问题描述
所以。我正在尝试通过有向图查找路径。
我从一个包含 3 列的 Pandas 数据框开始:“源”、“目标”、“重量”。权重用于跟踪每个目标的动作(它只是一个数字)。
然后我将 df 转换为边缘列表:
edge_list = nx.from_pandas_edgelist(df, '源','目标','权重')
然后,为了更好地衡量,我将其转换为有向图(我相当有信心这是正确发生的)
有向图 = nx.有向图(边缘列表)
但是,每当我开始在图中搜索路径时,都会得到无向路径。我检查并仔细检查,但如果我定义了一个路径
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
返回图的实例,而不是边列表,因此您首先创建一个图,然后通过为每个无向边添加两个有向弧将其转换为有(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)])
推荐阅读
- c# - 将标头请求和标头响应添加到 serilog 中间件日志记录
- mysql - 不正确的整数值:第 2 行 MySQL 中列“变量”的“H”
- html - Chrome:CSS计算样式有一小部分不同
- go - 如何在不尝试存储的情况下验证 golang 中的模板?
- python - aiohttp 会话的 NTLM 身份验证
- c# - 如何在c#中将带分隔符的字符串转换为json字符串
- django - 将 PRIMARY KEY 约束添加到现有表
- node.js - NextJS 与 ExpressJS 服务器 ENV 变量在使用前未加载
- python - 使用 folium python 提取 json 数据以绘制地图时出错
- sql - 修复存储过程pl/sql中的代码(缺少右括号)