Networkx-最短路径长度

2024-05-18 09:09:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用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


Tags: andpath函数no路径程序networkx节点
2条回答
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'

或者,根据图的类型——即,有向的、强连接的或弱连接的,或无向的——创建组件子图(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)

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

相关问题 更多 >