मैं इस कोड द्वारा दिए गए नोड की सबसे बड़ी दूरी खोजने की कोशिश कर रहा हूं।

import networkx as nx

G= nx.read_gpickle("Database/Pickle/test.gpickle")

word = ['a', 'b', 'c', 'd', 'e', 'g', 'h', 't', 'i', 'j', 'k']
maxdistance = 0

for source in range(len(word)):
    for target in range(source+1, len(word)):

        distance = nx.dijkstra_path_length(G, word[source], word[target], weight='cost')
        if maxdistance < distance:
            maxdistance = distance

print(maxdistance)

मुझे लगता है कि प्रत्येक जोड़े का सबसे छोटा रास्ता खोजने में थोड़ा लंबा समय लगता है, इसलिए क्या किसी भी तरह से तेजी से दूरी का पता लगाना है।

1
Kaow 7 सितंबर 2019, 06:30

1 उत्तर

सबसे बढ़िया उत्तर

स्रोत नोड से किसी अन्य नोड तक की दूरी को खोजने के लिए एक फ़ंक्शन है। आप प्रत्येक स्रोत नोड के लिए फ़ंक्शन को कॉल कर सकते हैं। फ़ंक्शन दूरियों का एक शब्दकोश देता है। शब्दों की सूची में शामिल लक्ष्यों का चयन करें और उनमें से सबसे बड़ा खोजें:

maxdistance = 0
word = set(word) # Sets are faster than lists
for source in word:
    distances = nx.single_source_shortest_path_length(G, source)
    maxdistance = max(maxdistance,
                      max(v for k,v in distances.items() if k in word)

यदि word ग्राफ़ में सभी नोड्स का एक सेट है, तो बस ग्राफ़ का व्यास ज्ञात करें:

maxdistance = nx.diameter(G)
0
DYZ 7 सितंबर 2019, 04:52