2013-01-17 10 views
5

मैं igraph का उपयोग कर रहा हूं ताकि ऊर्ध्वाधर जोड़े के बीच सबसे छोटी पथ दूरी का मैट्रिक्स उत्पन्न हो सके, लेकिन मैं यह नहीं समझ सकता कि शिखर को कैसे वापस किया जाए। अब तक मेरे पास है:मैं igraph का उपयोग कर सबसे कम पथ पर शिखर कैसे प्राप्त करूं?

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

मैं एक समारोह जो दूरी की मैट्रिक्स की तरह रास्तों में से एक मैट्रिक्स रिटर्न की तलाश में हूँ, लेकिन मैं igraph documentation से पता चलता है जो पथ पाने के लिए कुछ भी नहीं देख सकता।

उत्तर

13

आपको जिस फ़ंक्शन की आवश्यकता है वह 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

+0

है जैसे कि यह मदद करनी चाहिए लग रहा है यही कारण है कि मदद करता है करते हैं, हालांकि वहां एक चेतावनी पर इस वर्ग का उपयोग नहीं है शीर्ष और इसके बजाय 'igraph.Graph' का उपयोग करने के लिए। मुझे लगता है कि यह फ़ंक्शन अभी तक 'igraph.Graph' में जोड़ा नहीं गया है। –

+4

'igraph.Graph'' igraph.GraphBase' से विधियों का वारिस नहीं है? मैं खुद को यकीन नहीं कर रहा हूं, बस पूछ रहा हूं .... –

+2

तो यह करता है। वहां एक ब्रेनफ्रीज़ का थोड़ा सा होना। धन्यवाद। –

2

मैं इस

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

आशा इस

संबंधित मुद्दे