2017-08-10 1 views

答えて

1

あなたのグラフがGで、次のようにソースノードがsourceで、その後、あなたがパスを取得するためにsingle_source_dijkstra_path_lengthを使用することができます長されているとします。

>>> source_path_lengths = networkx.single_source_dijkstra_path_length(G, source) 
>>> for (v, l) in source_path_lengths.iteritems(): 
     if l == 2: 
      print v 
+0

ありがとうございます。この方法は良いですが、グラフのノード全体を計算するのには適していない可能性があります。この方法では、3と4のような他の距離を計算する必要があります。これらの時間を無駄にしない効率的な方法がありますか?前もって感謝します。 – SunWJ

+0

@SunWJキーワード引数 'cutoff'を使って、2より小さいか等しいパスに検索を下げることができます。また、グラフに重み付けされているかどうかに応じて、' single_source_shortest_path_length'(重み付けされていない)を使うことができます。 – rodgdor

+0

ありがとうございました – SunWJ

1

さて、あなたは「2」と「カットオフ」パラメータを割り当てることができますSingle Source Shortest Path - Networkxのドキュメントからわかるように、したがって、基本的にアルゴリズムはパスの長さがパスの長さまで見つけます< =カットオフ。

import networkx as nx 

G = nx.path_graph(5) 

path = nx.single_source_shortest_path_length(G ,source=src_vertex,cutoff=2) 

あなたは、ソース

print path.keys() 
#output : [0, 1, 2, 3, 4] 

から< = 2の距離で頂点のリストに、次を使用することができますまたはあなたがちょうど源との間の距離を取得するために、辞書自体を印刷する可能性があり、長さ< =カットオフ

print vertex_list 
#Output : {0: 0, 1: 1, 2: 2} 

点で最大の頂点はあなたの必要性に従ってそれに応じて「カットオフ」の値を変更することができます。

+0

ありがとうございました! – SunWJ

関連する問題