14

私はnetworkx5万ノードで構成される大規模なネットワークグラフを管理するために使用しています。

特定のノードのセット、たとえば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 に答える