我有以下图表
path=nx.dijkstra_path(g,"A","D",weight='cost')
->['A', 'C', 'D']
我试图找到A和D之间的最短路径并且有效
edgesinpath=zip(path[0:],path[1:])
for (u,v ) in edgesinpath:
print u,v,g[u][v]
我需要的是获取此路径中的边缘信息(更具体的索引)。
尝试远:
A C {0: {'index': 1, 'cost': 20}}
C D {0: {'index': 5, 'cost': 150}, 1: {'index': 6, 'cost': 200}}
但当然这会消除所有的边缘,在路径中数学u,v:
/[0-9]+\.[0-9]+/
知道如何获取正确的信息吗?这可以通过networkx获得吗?
THX。
答案 0 :(得分:1)
一种可能的解决方案:
edges_ids = []
for u,v in edgesinpath:
edge = sorted(g[u][v], key=lambda x:g[u][v][x]['cost'])[0]
edges_ids.append(g[u][v][edge]['index'])
这样可以选择每个多边缘,即最短路径中的边缘,并且成本最低。