我正在构建一个图表,其中城市为节点,边缘是连接这些节点的主要高速公路。
我的边缘属性是高速公路的长度以及从起点到目的地节点所需的时间估计值。
NetworkX具有计算距离度量的算法,如Diameter(最远距离节点之间的最短路径),偏心率(从节点到所有其他节点的最大距离)和Radius(整个网络的最大偏心率)。
是否可以使用边缘属性计算这些指标,例如我上传到网络的英里距离和时间(以分钟为单位)?
答案 0 :(得分:2)
您可以使用以下公式计算图表中所有最短加权路径的矩阵:
shortest1 = shortest_path_length(G, weight="distance")
您现在可以使用以下方法计算图表的偏心率:
ecc = eccentricity(G, sp=shortest2)
最后,您可以使用偏心率来计算直径等:
diam = diameter(G, e=ecc)
请注意shortest_path_length
返回的最短路径和eccentricity
期望的最短路径具有不同的结构((节点,字典)与字典字典的元组列表)。您可以使用shortest2 = dict(shortest1)
将其中一个转换为另一个。