Networkx - 最短路径长度

时间:2012-02-24 11:31:55

标签: python networkx

我正在使用networkx来管理由50k节点组成的大型网络图。

我想计算一组特定节点之间的最短路径长度,比如N. 为此我正在使用nx.shortest_path_length函数。

在N的某些节点中,可能没有路径,因此networkx正在提升并停止我的程序。

有没有办法运行这个程序没有任何错误?
并告诉shortest_path_length返回一些最大值?

代码只是在循环中使用nx.shortest_path_length(G,i,j)。 和错误如下

raise nx.NetworkXNoPath("No path between %s and %s." % (source, target)) networkx.exception.NetworkXNoPath: No path between V and J

2 个答案:

答案 0 :(得分:14)

import networkx as nx
G=nx.Graph()
G.add_nodes_from([1,2,3,4])
G.add_edge(1,2)
G.add_edge(3,4)
try:
    n=nx.shortest_path_length(G,1,4)
    print n
except nx.NetworkXNoPath:
    print 'No path'

答案 1 :(得分:0)

或者,根据图的类型(即有向,强连接或弱连接或无向),创建组件子图(sub_G),即

(G.subgraph(c) for c in connected_components(G))

已指导

nx.weakly_connected_component_subgraphs(G)或   nx.strongly_connected_component_subgraphs(G)

此外,给定sub_G是一个有向图,请检查其连接强度,例如

nx.is_strongly_connected(sub_G)或   ng.is_weakly_connected(sub_G)

这些建议组合或单独使用,将减少由于组件子图的性质而对不存在的路径进行不必要的检查。