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

पायथन में उन एज को ज्ञात करने का प्रोग्राम जो ग्राफ को डिस्कनेक्ट करते हैं


मान लीजिए हमें एक अनडायरेक्टेड ग्राफ दिया गया है जिसे एडजेसेंसी लिस्ट के रूप में दर्शाया गया है, जहां graph[i] नोड i के पड़ोसी नोड्स हैं। हमें उन एज की संख्या ज्ञात करनी है जिन्हें हटाने पर ग्राफ डिस्कनेक्ट हो जाता है (ब्रिज एज)।

उदाहरण के लिए, दिए गए ग्राफ के लिए आउटपुट 1 होगा।

एल्गोरिदम (DFS - टार्जन का एल्गोरिदम)

  • dfs(curr, pre, d) फ़ंक्शन परिभाषित करें:
    • ans := INF, dep[curr] := d
    • प्रत्येक adj in graph[curr] के लिए:
      • यदि pre == adj, तो जारी रखें
      • यदि dep[adj] != -1, तो ans = min(ans, dep[adj])
      • अन्यथा ans = min(ans, dfs(adj, curr, d+1))
    • यदि d > 0 और d <= ans, तो re++ (ब्रिज मिला)
    • ans वापस करें
  • मुख्य फ़ंक्शन से:
    • dep := [-1]*len(graph), re := 0
    • dfs(0, -1, 0) कॉल करें
    • re वापस करें

उदाहरण

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. Python में ग्राफ में क्रिटिकल और स्यूडो-क्रिटिकल एज खोजने का प्रोग्राम Python में ग्राफ में क्रिटिकल और स्यूडो-क्रिटिकल एज खोजने का प्रोग्राम

    मान लीजिए, हमें एक ग्राफ दिया गया है जिसमें n वर्टेक्स हैं जो 0 से n-1 तक नंबर किए गए हैं। ग्राफ अनडायरेक्टेड है और प्रत्येक एज का एक वजन है। दिए गए ग्राफ से, हमें ग्राफ के MST में क्रिटिकल और स्यूडो-क्रिटिकल एज ढूंढने हैं। एक एज को क्रिटिकल एज कहा जाता है यदि उस एज को हटाने से MST का वजन बढ़ जाता