Python 如何使用igraph获得最短路径上的顶点?

Python 如何使用igraph获得最短路径上的顶点?,python,shortest-path,igraph,Python,Shortest Path,Igraph,我正在使用igraph生成顶点对之间的最短路径距离矩阵,但我不知道如何返回顶点。到目前为止,我已经: path_length_matrix = ig_graph.shortest_paths_dijkstra(None,None,"distance", "ALL") 我正在寻找一个函数,该函数返回路径矩阵,如距离矩阵,但在中我看不到任何显示如何获取路径的函数。我相信您需要的函数是获取最短路径。看 您需要为每个源顶点单独调用它,它将为每对节点只提供一条(任意)最短路径。如果需要所有最短路径,请参

我正在使用
igraph
生成顶点对之间的最短路径距离矩阵,但我不知道如何返回顶点。到目前为止,我已经:

path_length_matrix = ig_graph.shortest_paths_dijkstra(None,None,"distance", "ALL")

我正在寻找一个函数,该函数返回路径矩阵,如距离矩阵,但在中我看不到任何显示如何获取路径的函数。

我相信您需要的函数是
获取最短路径。看

您需要为每个源顶点单独调用它,它将为每对节点只提供一条(任意)最短路径。如果需要所有最短路径,请参见“获取所有最短路径”

我这样做

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)

这看起来应该会有帮助,尽管有一个警告,不要在顶部使用这个类,而是使用
igraph.Graph
。我猜这个函数还没有添加到
igraph.Graph
中。难道
igraph.Graph
没有从
igraph.GraphBase
继承方法吗?我自己也不确定,只是问……@GaborCsardi,你不确定你是什么时候写的那些类:实际上,DI没有。