我正在使用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
答案 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)
这些建议组合或单独使用,将减少由于组件子图的性质而对不存在的路径进行不必要的检查。