Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में मार्कोव चेन में दिए गए समय पर किसी अवस्था की संभावना खोजें - सेट 1


मान लीजिए हमारे पास एक मार्कोव चेन ग्राफ g है। हमें समय T पर अवस्था F तक पहुंचने की संभावना ढूंढनी है यदि हम समय t = 0 पर अवस्था S से शुरू करते हैं। जैसा कि हम जानते हैं, मार्कोव चेन एक यादृच्छिक प्रक्रिया है जिसमें विभिन्न अवस्थाएं होती हैं और एक अवस्था से दूसरी अवस्था में जाने की संभावनाएं होती हैं। इसे एक निर्देशित ग्राफ के रूप में दर्शाया जा सकता है; नोड्स अवस्थाएं हैं और एज एक नोड से दूसरे नोड में जाने की संभावना दर्शाते हैं। एक अवस्था से दूसरी अवस्था में जाने में इकाई समय लगता है। प्रत्येक नोड के लिए आउटगोइंग एज की संभावनाओं का योग एक होता है।

इसलिए, यदि इनपुट N = 6, S = 4, F = 2, T = 100 है, तो आउटपुट 0.28499144801478526 होगा।

समाधान दृष्टिकोण

इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:

  • table := (N+1) x (T+1) आकार का मैट्रिक्स 0.0 से भरें।
  • table[S][0] := 1.0
  • i को 1 से T तक के लिए:
    • j को 1 से N तक के लिए:
      • G[j] में प्रत्येक k के लिए:
        • table[j][i] := table[j][i] + k[1] * table[k[0]][i-1]
  • table[F][T] लौटाएं।

उदाहरण

बेहतर समझ के लिए निम्न कार्यान्वयन देखें:

def get_probability(G, N, F, S, T):
    table = [[0.0 for j in range(T + 1)] for i in range(N + 1)]
    table[S][0] = 1.0
    for i in range(1, T + 1):
        for j in range(1, N + 1):
            for k in G[j]:
                table[j][i] += k[1] * table[k[0]][i - 1]
    return table[F][T]

graph = []
graph.append([])
graph.append([(2, 0.09)])
graph.append([(1, 0.23), (6, 0.62)])
graph.append([(2, 0.06)])
graph.append([(1, 0.77), (3, 0.63)])
graph.append([(4, 0.65), (6, 0.38)])
graph.append([(2, 0.85), (3, 0.37), (4, 0.35), (5, 1.0)])
N = 6
S, F, T = 4, 2, 100
print(get_probability(graph, N, F, S, T))

इनपुट

6, 4, 2, 100

आउटपुट

0.28499144801478526
  1. Python में अनिर्देशित ग्राफ में दिए गए आकार का स्वतंत्र सेट है या नहीं जांचना Python में अनिर्देशित ग्राफ में दिए गए आकार का स्वतंत्र सेट है या नहीं जांचना

    मान लीजिए हमारे पास एक दिया गया अनिर्देशित ग्राफ है; हमें जांचना है कि क्या इसमें आकार l का एक स्वतंत्र सेट है। यदि आकार l का कोई स्वतंत्र सेट है तो Yes वापस करें अन्यथा No। हमें इस बात का ध्यान रखना है कि एक ग्राफ में स्वतंत्र सेट को उन शीर्षों के समूह के रूप में परिभाषित किया गया है जो सीधे एक-दूस

  1. - पायथन में सूची में दिए गए तत्वों की आवृत्ति का योग ज्ञात करें

    एक दी गई सूची में कई दोहराए गए आइटम होते हैं। हम कुछ ऐसे आइटम्स की आवृत्ति का योग ज्ञात करने में रुचि रखते हैं जो सूची में दोहराए जाते हैं। नीचे वे दृष्टिकोण दिए गए हैं जिनसे हम इसे प्राप्त कर सकते हैं। sum के साथ हमारे पास दो सूचियाँ हैं। एक में मानों की सूची है और दूसरी में उन मानों की सूची है जि

  1. - Python Regex का उपयोग करके दी गई स्ट्रिंग में "1(0+)1" के सभी पैटर्न खोजें

    इस ट्यूटोरियल में, हम एक प्रोग्राम लिखेंगे जो regexes का उपयोग करके स्ट्रिंग में 1(0+1) की सभी घटनाओं को ढूंढता है। हमारे पास Python में एक re मॉड्यूल है जो नियमित अभिव्यक्ति के साथ काम करने में हमारी मदद करता है।आइए एक नमूना केस देखें।इनपुट: string = Sample 1(0+)1 string with 1(0+)1 unnecessary pat