python - 使用networkx的最短路径的边属性

标签 python networkx

我正在尝试使用networkx来计算两个节点之间的最短路径。例如:

paths = nx.shortest_path(G, ‘A’, ‘C’, weight=‘cost’)

paths 将返回类似以下内容的内容: [‘A’、‘B’、‘C’]

nx.shortest_path_length() 返回该路径的成本,这也很有帮助。但是,我也想返回该路径遍历的边的列表。在这些边缘内是我存储的其他属性,我想返回它们。

这可能吗?

最佳答案

这里的代码可以满足您的所有需求(希望:p):

import numpy as np
# import matplotlib.pyplot as plt
import networkx as nx

# Create a random graph with 8 nodes, with degree=3
G = nx.random_regular_graph(3, 8, seed=None)

# Add 'cost' attributes to the edges
for (start, end) in G.edges:
    G.edges[start, end]['cost'] = np.random.randint(1,10)

# Find the shortest path from 0 to 7, use 'cost' as weight
sp = nx.shortest_path(G, source=0, target=7, weight='cost')
print("Shortest path: ", sp)

# Create a graph from 'sp'
pathGraph = nx.path_graph(sp)  # does not pass edges attributes

# Read attributes from each edge
for ea in pathGraph.edges():
    #print from_node, to_node, edge's attributes
    print(ea, G.edges[ea[0], ea[1]])

输出将类似于以下内容:

Shortest path:  [0, 5, 7]
(0, 5) {'cost': 2}
(5, 7) {'cost': 3}

关于python - 使用networkx的最短路径的边属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57683321/

相关文章:

Python 的 Socketserver 到 Telnet 错误

python - 改进 Python NetworkX 图形布局

python - Networkx:NetworkXException:节点列表包含随机 block 模型的重复项

python :How to generate a power law graph

python - 如何使用 networkx 从 Twitter 数据构建图表

python celery : Update django model after state change

python - 断言错误 : `HyperlinkedIdentityField` requires the request in the serializer context

python - 使用 tf.data.map 将音频文件拆分为 1 秒的音频张量 block ?

Python使用os.walk对目录中的所有文件分别运行exiftool

python - 从 networkx 中的 shapefile 创建图形时如何保留或至少对边缘属性进行排序?