14

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

4

2 回答 2

18
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'
于 2012-02-24T13:16:57.427 回答
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)

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

于 2019-05-25T17:09:26.920 回答