समस्या को हल करने के लिए आपको networkX
की आवश्यकता नहीं है, numpy
यदि आप इसके पीछे गणित को समझते हैं तो यह कर सकते हैं। एक अप्रत्यक्ष, असीमित ग्राफ हमेशा एक [0,1] आसन्नता मैट्रिक्स द्वारा प्रदर्शित किया जा सकता है। nth
इस मैट्रिक्स की शक्तियां से n
चरणों के बाद चरणों की संख्या का प्रतिनिधित्व करती हैं। हम एक मार्कोव मैट्रिक्स के साथ काम कर सकते हैं, जो कि एडी के एक सामान्यीकृत रूप है। मैट्रिक्स। इस मैट्रिक्स की शक्तियां ग्राफ पर एक यादृच्छिक चलन का प्रतिनिधित्व करती हैं। यदि ग्राफ छोटा है, तो आप मैट्रिक्स की शक्तियां ले सकते हैं और इंडेक्स (start, end)
को देख सकते हैं, जिसमें आप रुचि रखते हैं। अंतिम स्थिति को एक अवशोषित करने के लिए, एक बार चलने के स्थान पर यह भाग नहीं सकता है। प्रत्येक शक्ति n
पर आपको संभावना है कि आप (i,j)
से फैल गए होंगे। मारने का समय इस फ़ंक्शन से गणना की जा सकती है (जैसा कि आप सटीक अलग-अलग चरणों के लिए हिट टाइम जानते हैं)।
नीचे बढ़त सूची से परिभाषित किया गया एक सरल ग्राफ के साथ एक उदाहरण है। अंत में, मैं इस मारने का समय कार्य करता हूं।
from numpy import *
hit_idx = (0,4)
# Define a graph by edge list
edges = [[0,1],[1,2],[2,3],[2,4]]
# Create adj. matrix
A = zeros((5,5))
A[zip(*edges)] = 1
# Undirected condition
A += A.T
# Make the final state an absorbing condition
A[hit_idx[1],:] = 0
A[hit_idx[1],hit_idx[1]] = 1
# Make a proper Markov matrix by row normalizing
A = (A.T/A.sum(axis=1)).T
B = A.copy()
Z = []
for n in xrange(100):
Z.append(B[hit_idx])
B = dot(B,A)
from pylab import *
plot(Z)
xlabel("steps")
ylabel("hit probability")
show()
वाह: एक संदर्भ बिंदु के रूप में, यह प्रयोग किया जाता ग्राफ है। यह आपके पास एक अच्छा जवाब है। तो मैं मान लेते हैं कि मैं गूगल मैट्रिक्स मार समय एल्गोरिथ्म प्रदर्शन से पहले का उपयोग (या एक मैट्रिक्स में मेरी ग्राफ परिवर्तित) पहले करने की जरूरत है? – DjangoRocks
networkX एक पृष्ठस्तर विधि में बनाया गया है: http://networkx.lanl.gov/reference/algorithms.link_analysis.html – EdChum
@EdChum के रूप में मैं पेज रैंक कलन विधि के साथ बिल्कुल परिचित नहीं हूँ, पहले पारित होने के समय का मतलब है कि यह कैसे संबंधित है (मुझे क्या लगता है कि ओपी मारने का समय बुला रहा है)? मैंने इस समाधान को एक शैक्षिक अभ्यास के रूप में प्रस्तुत किया ताकि किसी को भी सामान्य रूप से समस्या का समाधान करने में मदद मिल सके। कृपया नेटवर्कक्स समाधान पोस्ट करें यदि आप दिखा सकते हैं कि यह समस्या को सीधे हल करता है तो मैं लाइब्रेरी का उपयोग करके इसे हल करने का उचित तरीका देख सकता हूं। – Hooked