我使用igraph
生成顶点对之间的最短路径距离的矩阵,但我无法弄清楚如何返回顶点。 到目前为止,我有:
path_length_matrix = ig_graph.shortest_paths_dijkstra(None,None,"distance", "ALL")
我在寻找返回的距离一样的矩阵通路的矩阵功能,但我看不到任何东西的igraph文档展示了如何获取的路径。
我使用igraph
生成顶点对之间的最短路径距离的矩阵,但我无法弄清楚如何返回顶点。 到目前为止,我有:
path_length_matrix = ig_graph.shortest_paths_dijkstra(None,None,"distance", "ALL")
我在寻找返回的距离一样的矩阵通路的矩阵功能,但我看不到任何东西的igraph文档展示了如何获取的路径。
你需要的功能是get_shortest_paths
我相信。 见http://packages.python.org/python-igraph/igraph.GraphBase-class.html#get_shortest_paths
您需要单独调用它为每一个源顶点,它会给你只有一个(任意)的最短路径为每一对节点。 如果你需要的所有最短路径,然后看看get_all_shortest_paths
: http://packages.python.org/python-igraph/igraph.GraphBase-class.html#get_all_shortest_paths
我这样做
from igraph import *
g = Graph([(0,1), (0,2), (2,3), (3,4), (4,2), (2,5), (5,0), (6,3), (5,6)])
g.vs["name"] = ["Alice", "Bob", "Claire", "Dennis", "Esther", "Frank", "George"]
#You could create Vertexes like g.add_vertex(name="Bill")
path=g.get_shortest_paths("Alice",to="Frank",mode=OUT,output='vpath')
for n in path[0]:
print("{}".format(g.vs[n]['name']))
希望这可以帮助
这是找到权有向图(DAG)的最短路径的方式。 所以这是我想通了:
import igraph
from igraph import *
g = Graph(directed=True)
g.add_vertices(3)
g.vs["name"]=["GO:1234567","GO:6789056","GO:5674321"]
g.es["weight"]=1
g['GO:1234567','GO:6789056']=1
g['GO:6789056','GO:5674321']=5
weight=g.es["weight"]
print weight
print g.degree(mode="in")
print g.shortest_paths_dijkstra(source="GO:1234567", target="GO:5674321",
weights=weight, mode=OUT)