【问题标题】:Networkx - Shortest path lengthNetworkx - 最短路径长度
【发布时间】:2012-02-24 11:31:55
【问题描述】:

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

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

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

有什么方法可以不出错地运行这个程序吗?
并告诉shortest_path_length 返回一些最大值?

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

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

【问题讨论】:

  • “并停止我的程序”?你的意思是它会引发异常吗?您是否正在寻求有关try: 声明的帮助?您可以发布代码和您实际收到的实际错误消息吗?
  • 是的,它正在引发异常并且存在运行时错误,因此它会在输出中打印异常消息,甚至不会在迭代中处理其他节点。
  • 评论没有帮助。实际上 update 带有异常代码和详细信息的问题。并且 -- 如果您不熟悉 try 语句,请查找教程并在完成教程后询问有关 try 语句的具体问题。
  • 请。实际上 update 带有异常代码和详细信息的问题。评论很难阅读。

标签: python networkx


【解决方案1】:
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'

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-21
      相关资源
      最近更新 更多