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

पायथन में ग्राफ़ को डिस्कनेक्ट करने वाले किनारों का पता लगाने का कार्यक्रम

मान लीजिए कि हमें एक अप्रत्यक्ष ग्राफ प्रदान किया गया है जिसे आसन्न सूची के रूप में दर्शाया गया है, जहां ग्राफ [i] नोड i के पड़ोसी नोड्स का प्रतिनिधित्व करता है। हमें किनारों की संख्या ज्ञात करनी है जो निम्नलिखित शर्त को पूरा करती है।

यदि किनारे को हटा दिया जाता है, तो ग्राफ़ डिस्कनेक्ट हो जाता है।

So, if the input is like graph = [
   [0, 2],
   [0, 4],
   [1, 2, 3],
   [0, 3, 4],
   [4],
   [3],
   [2]
],

तो आउटपुट 1 होगा।

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

  • फ़ंक्शन dfs () को परिभाषित करें। यह कर्ट, प्री, डी

    . लेगा
    • उत्तर:=अनंत

    • dep[curr] :=d

    • ग्राफ़ में प्रत्येक adj के लिए[curr], करें

      • यदि पूर्व adj के समान है, तो

        • अन्य चरणों को निष्पादित किए बिना अगला पुनरावृत्ति जारी रखें

      • यदि dep[adj] −1 के समान नहीं है, तो

        • उत्तर :=न्यूनतम उत्तर, dep[adj]

      • अन्यथा,

        • उत्तर:=न्यूनतम उत्तर, dfs(adj, curr, d + 1)

    • यदि d> 0 और d <=उत्तर, तो

      • पुन:=पुनः + 1

    • वापसी उत्तर

  • अब, मुख्य फ़ंक्शन से फ़ंक्शन को dfs () कहते हैं।

  • dep :=−1 से आरंभ किए गए ग्राफ़ के आकार की एक सूची।

  • पुन:=0

  • dfs(0, −1, 0)

  • वापस लौटें

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

उदाहरण

class Solution:
   def solve(self, graph):
      dep = [−1] * len(graph)
      INF = int(1e9)
      self.re = 0
      def dfs(curr, pre, d):
         ans = INF
         dep[curr] = d
         for adj in graph[curr]:
            if pre == adj:
               continue
            if dep[adj] != −1:
               ans = min(ans, dep[adj])
            else:
               ans = min(ans, dfs(adj, curr, d + 1))
         if d > 0 and d <= ans:
            self.re += 1
         return ans
      dfs(0, −1, 0)
      return self.re
ob = Solution()
print(ob.solve(graph = [
   [0, 2],
   [0, 4],
   [1, 2, 3],
   [0, 3, 4],
   [4],
   [3],
   [2]
]))

इनपुट

graph = [
   [0, 2],
   [0, 4],
   [1, 2, 3],
   [0, 3, 4],
   [4],
   [3],
   [2]
]

आउटपुट

1

  1. ग्राफ़ में सबसे बड़े गुट के न्यूनतम आकार का पता लगाने का कार्यक्रम (पायथन)

    मान लीजिए कि हमें एक ग्राफ दिया गया है और ग्राफ में सबसे बड़े समूह का न्यूनतम आकार ज्ञात करने के लिए कहा गया है। ग्राफ़ का एक समूह एक ग्राफ़ का एक उपसमुच्चय होता है, जहाँ प्रत्येक शीर्ष जोड़े आसन्न होते हैं, अर्थात प्रत्येक जोड़े के बीच एक किनारा मौजूद होता है। एक ग्राफ में सबसे बड़ा गुट ढूँढना बहुप

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

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

  1. पायथन में एक ग्राफ में महत्वपूर्ण और छद्म-महत्वपूर्ण किनारों का पता लगाने का कार्यक्रम

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