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

BFS का उपयोग करके अनडायरेक्टेड ग्राफ में साइकिल है या नहीं जांचने का पायथन प्रोग्राम


जब ट्री के सभी नोड्स का योग खोजना हो, तो एक क्लास बनाई जाती है जिसमें रूट नोड सेट करने, ट्री में एलिमेंट्स जोड़ने, विशिष्ट एलिमेंट खोजने और ट्री के एलिमेंट्स को जोड़कर योग खोजने आदि के लिए मेथड्स होते हैं। क्लास का एक इंस्टेंस बनाकर इन मेथड्स को एक्सेस और उपयोग किया जा सकता है।

उदाहरण

from collections import deque

def add_edge(adj: list, u, v):
    adj[u].append(v)
    adj[v].append(u)

def detect_cycle(adj: list, s, V, visited: list):
    parent = [-1] * V
    q = deque()
    visited[s] = True
    q.append(s)
    while q != []:
        u = q.pop()
        for v in adj[u]:
            if not visited[v]:
                visited[v] = True
                q.append(v)
                parent[v] = u
            elif parent[u] != v:
                return True
    return False

def cycle_disconnected(adj: list, V):
    visited = [False] * V
    for i in range(V):
        if not visited[i] and detect_cycle(adj, i, V, visited):
            return True
    return False

if __name__ == "__main__":
    V = 5
    adj = [[] for i in range(V)]
    add_edge(adj, 0, 1)
    add_edge(adj, 1, 2)
    add_edge(adj, 2, 0)
    add_edge(adj, 2, 3)
    add_edge(adj, 2, 1)
    if cycle_disconnected(adj, V):
        print("ग्राफ में 5 वर्टेक्स हैं")
        print("0-->1")
        print("1-->2")
        print("2-->0")
        print("2-->3")
        print("2-->1")
        print("क्या साइकिल है?")
        print("हां")
    else:
        print("ग्राफ में 5 वर्टेक्स हैं")
        print("0-->1")
        print("1-->2")
        print("2-->0")
        print("2-->3")
        print("2-->1")
        print("क्या साइकिल है?")
        print("नहीं")

आउटपुट

ग्राफ में 5 वर्टेक्स हैं
0-->1
1-->2
2-->0
2-->3
2-->1
क्या साइकिल है? हां

व्याख्या

  • आवश्यक पैकेज आयात किए जाते हैं।

  • 'add_edge' नामक एक अन्य मेथड परिभाषित की जाती है जो ग्राफ में नोड्स जोड़ने में मदद करती है।

  • 'detect_cycle' नामक एक मेथड परिभाषित की जाती है जो यह निर्धारित करने में मदद करती है कि ग्राफ के कंपोनेंट्स कनेक्ट होने पर साइकिल बनती है या नहीं।

  • 'cycle_disconnected' नामक एक अन्य मेथड परिभाषित की जाती है जो यह निर्धारित करने में मदद करती है कि साइकिल कनेक्टेड है या नहीं।

  • 'add_edge' मेथड का उपयोग करके एलिमेंट्स को ग्राफ में जोड़ा जाता है।

  • इसे कंसोल पर प्रदर्शित किया जाता है।

  • 'cycle_disconnected' मेथड को कॉल किया जाता है और आउटपुट कंसोल पर प्रदर्शित होता है।


  1. पायथन में स्टार ग्राफ का केंद्र ज्ञात करने का प्रोग्राम पायथन में स्टार ग्राफ का केंद्र ज्ञात करने का प्रोग्राम

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

  1. पायथन में जांचें कि ग्राफ सभी द्वारा पारगम्य है या नहीं पायथन में जांचें कि ग्राफ सभी द्वारा पारगम्य है या नहीं

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

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

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