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

किसी दिए गए विशेष मैट्रिक्स के निर्धारक का पता लगाने के लिए पायथन प्रोग्राम

मान लीजिए, हमारे पास n शीर्षों वाला एक पेड़ है, जहां प्रत्येक शीर्ष को 1 से n तक लेबल किया गया है। पेड़ की जड़ में लेबल 1 होता है, और प्रत्येक शीर्ष का भार wi होता है। अब एक nxn मैट्रिक्स A बनता है जहाँ A(x,y) =Wf(x, y) जहाँ f(x, y) शीर्ष x और y का सबसे छोटा सामान्य पूर्ववर्ती है। हमें मैट्रिक्स ए के निर्धारक का पता लगाना है। मैट्रिक्स के किनारों, भार, और कुल शिखरों की संख्या हमें इनपुट के रूप में दी गई है।

तो, अगर इनपुट की तरह है input_array =[[1, 2], [1, 3], [1, 4], [1, 5]], weights =[1, 2, 3, 4, 5], कोने =5, तो आउटपुट 24 होगा।

मैट्रिक्स ए को =

. के रूप में दिया गया है
1 1 1 1 1
1 2 1 1 1
1 1 3 1 1
1 1 1 4 1
1 1 1 1 5

इस मैट्रिक्स का निर्धारक 24 है।

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

  • w :=एक खाली सूची
  • मैं के लिए 0 से कोने तक की सीमा में, करते हैं
    • वज़न जोड़ें[i] और w में एक नई सूची
  • प्रत्येक i के लिए, एन्यूमरेट में आइटम (input_array), do
    • p :=आइटम[0]
    • q:=आइटम[1]
    • w[p - 1, 1] के अंत में q - 1 डालें
    • w[q - 1, 1] के अंत में p-1 डालें।
  • det :=1
  • स्टैक :=एक स्टैक जिसमें टपल (0, 0) होता है
  • जबकि स्टैक खाली नहीं है, करें
    • i, वज़न:=स्टैक से शीर्ष तत्व हटाएं
    • det :=(det * (w[i, 0] - weights)) mod (10^9 + 7)
    • t in w[i][1] के लिए, do
      • स्टैक में टपल युक्त (t,w[i,0]) जोड़ें
      • w[i][1] में प्रत्येक t के लिए,
          . करें
        • मुझे w[t,1] से हटाएं
  • वापसी का विवरण

उदाहरण

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

def solve(input_array, weights, vertices):
   w = [[weights[i],[]] for i in range(vertices)]
   for i, item in enumerate(input_array):
      p,q = item[0], item[1]
      w[p - 1][1].append(q - 1)
      w[q - 1][1].append(p - 1)
   det = 1
   stack = [(0,0)]
   while stack:
      i, weights = stack.pop()
      det = (det * (w[i][0] - weights)) % (10**9 + 7)
      stack += [(t,w[i][0]) for t in w[i][1]]
      for t in w[i][1]:
         w[t][1].remove(i)
   return det
print(solve([[1, 2], [1, 3], [1, 4], [1, 5]], [1, 2, 3, 4, 5], 5))

इनपुट

[[1, 2], [1, 3], [1, 4], [1, 5]], [1, 2, 3, 4, 5], 5

आउटपुट

24

  1. पायथन में दिए गए ग्राफ में विशेष प्रकार के सबग्राफ खोजने का कार्यक्रम

    मान लीजिए हमारे पास एक विशेष प्रकार का ग्राफ है जिसमें दो प्रकार के शीर्ष हैं जिन्हें सिर और पैर नाम दिया गया है। ग्राफ में केवल एक सिर होता है और k किनारे होते हैं जो सिर को प्रत्येक पैर से जोड़ते हैं। इसलिए, अगर हमें एक अप्रत्यक्ष, बिना भार वाला ग्राफ दिया जाता है; हमें इन विशेष प्रकार के आलेखों क

  1. यह पता लगाने के लिए कार्यक्रम कि क्या पायथन में सभी के द्वारा ग्राफ़ को ट्रैवर्स किया जा सकता है

    मान लीजिए, हमें एक ग्राफ दिया गया है जिसमें n शीर्षों की संख्या 0 से n - 1 है। ग्राफ अप्रत्यक्ष है और प्रत्येक किनारे का वजन है। ग्राफ में तीन प्रकार के भार हो सकते हैं और प्रत्येक भार एक विशेष कार्य को दर्शाता है। दो लोग हैं जो ग्राफ को पार कर सकते हैं, अर्थात् जैक और केसी। जैक ग्राफ को पार कर सकता

  1. एक मैट्रिक्स के स्थानान्तरण को खोजने के लिए पायथन कार्यक्रम

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन एक मैट्रिक्स को देखते हुए, हमें उसी मैट्रिक्स में ट्रांसपोज़ को स्टोर करना होगा और उसे प्रदर्शित करना होगा। पंक्तियों को कॉलम और कॉलम को पंक्तियों में बदलकर मैट्रिक्स का स्थानांतरण प्राप्त किया ज