我使用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
或者,根据图的类型——即,有向的、强连接的或弱连接的,或无向的——创建组件子图(sub-G),即
(G.subgraph(c) for c in connected_components(G))
或者如果导演:
nx.weakly_connected_component_subgraphs(G)
或nx.strongly_connected_component_subgraphs(G)
此外,给定的子图是有向图,检查其连接的强度,例如
nx.is_strongly_connected(sub_G)
或ng.is_weakly_connected(sub_G)
这些建议结合或单独使用,将减少由于组件子图的性质而不存在的不必要的路径检查。
相关问题 更多 >
编程相关推荐