簡體   English   中英

如何使用 igraph 獲取最短路徑上的頂點?

[英]How do I get the vertices on the shortest path using igraph?

我正在使用igraph生成頂點對之間最短路徑距離的矩陣,但我不知道如何返回頂點。 到目前為止,我有:

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

我正在尋找一個函數,它返回一個路徑矩陣,比如距離矩陣,但我在igraph 文檔中看不到任何顯示如何獲取路徑的內容。

我相信你需要的函數是get_shortest_paths 請參閱https://igraph.org/python/doc/igraph.GraphBase-class.html#get_shortest_paths

您需要為每個源頂點單獨調用它,它只會為每對節點提供單個(任意)最短路徑。 如果您需要所有最短路徑,請參閱get_all_shortest_pathshttps : 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM