2013-01-17 27 views
5

Köşeler çiftleri arasında en kısa yol mesafeleri matrisini oluşturmak için igraph kullanıyorum ancak köşeleri nasıl döndüreceğimi anlayamıyorum. Ben mesafelerin matrisinin gibi yolların bir matris döndüren bir işlev arıyorumKöşeleri igraf'ı kullanarak en kısa yoldan nasıl alabilirim?

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

ama yolları nasıl gösterir igraph documentation şey göremiyorum: Şimdiye kadar var.

cevap

13

İhtiyacınız olan işlev get_shortest_paths olduğuna inanıyorum. Her bir kaynak köşe için ayrı ayrı aramanız gerekir ve her bir çift düğüm için yalnızca tek (isteğe bağlı) bir kısa yol verecektir. Eğer tüm kısa yolları gerekiyorsa, o zaman get_all_shortest_paths bkz: http://packages.python.org/python-igraph/igraph.GraphBase-class.html#get_all_shortest_paths

+0

yardımcı do, bu sınıf kullanmamayı bir uyarı olmamasına rağmen En üstte ve yerine 'igraph.Graph' kullanmak. Bu işlev henüz "igraph.Graph" 'a eklenmemiş sanırım. –

+4

igraph.GraphBase 'igraph.GraphBase' yöntemlerini devralmıyor mu? Kendimden emin değilim, sadece soruyorum .... –

+2

Yani öyle. Orada biraz beyin fırtınası var. Teşekkürler. –

2

Bu

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'])) 

Umut bu da yardımcı olmalıdır benziyor

İlgili konular