2017-08-10 102 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) 

然后,您可以使用以下方法来顶点列表在< = 2的距离源

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

或者你可以打印字典本身得到完全的源之间的距离,高达长度< =截止

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

顶点可以相应地改变的“临界”值根据自己的需要。

+0

非常感谢你! – SunWJ

相关问题