2012-02-24 18 views
6

私はnetworkxを使用して、50k個のノードで構成される大きなネットワークグラフを管理しています。Networkx - 最短経路長

ノードの特定のノード間の最短経路長を計算したいとします。例えば、
これは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

+2

"と私のプログラムを停止する" を次のように と誤差がありますか?例外が発生するのですか?あなたは 'try:'ステートメントの助けを求めていますか?あなたが実際に取得しているコードと実際のエラーメッセージを投稿できますか? –

+0

ええ、例外が発生しており、実行時エラーがあるため、出力に例外メッセージが出力され、反復処理で他のノードも処理されません。 –

+0

コメントは役に立ちません。実際に** **コードと例外の詳細を質問に更新してください。そして、あなたがtry文に慣れていない場合は、チュートリアルを見つけて、チュートリアルの後にtryステートメントに関する**具体的な**質問をしてください。 –

答えて

9
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'