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

अनिर्देशित ग्राफ में चक्र का पता लगाएं



यह पता लगाने के लिए कि अनिर्देशित ग्राफ में कोई चक्र है या नहीं, हम दिए गए ग्राफ के लिए DFS ट्रैवर्सल का उपयोग करेंगे। प्रत्येक देखे गए शीर्ष v के लिए, जब हमें कोई आसन्न शीर्ष u मिलता है, जैसे कि u पहले से देखा गया है, और u शीर्ष v का पैरेंट नहीं है। तब एक चक्र का पता चलता है।

अनिर्देशित ग्राफ में चक्र का पता लगाएं

हम मान लेंगे कि किन्हीं दो शीर्षों के लिए कोई समानांतर किनारे नहीं हैं।

इनपुट और आउटपुट: आसन्नता मैट्रिक्स      0 1 0 0 0      1 0 1 1 0      0 1 0 0 1      0 1 0 0 1      0 0 1 1 0 आउटपुट: ग्राफ में चक्र है।

एल्गोरिदम

dfs(vertex, visited, parent)

इनपुट: प्रारंभ शीर्ष, देखा गया समुच्चय, और शीर्ष का पैरेंट नोड।

आउटपुट: चक्र मिलने पर सच।शुरू शीर्ष को देखे गए समुच्चय में जोड़ें शीर्ष के साथ आसन्न सभी शीर्ष v के लिए, करें यदि v = पैरेंट, तो वापस करें सच यदि v देखे गए समुच्चय में नहीं है, तो वापस करें सच यदि dfs(v, visited, vertex) सच है, तो वापस करें सच किया वापस करें गलत अंत hasCycle(graph) इनपुट: दिया गया ग्राफ। आउटपुट: जब चक्र मिला तो सच।शुरू ग्राफ में सभी शीर्ष v के लिए, करें यदि v देखे गए समुच्चय में नहीं है, तो अगले पुनरावृत्ति के लिए जाएं यदि dfs(v, visited, ∅) सच है, तो //v का पैरेंट null है वापस करें सच वापस करें गलत किया अंत

उदाहरण

#include<iostream> #include<set> #define NODE 5 using namespace std; int graph[NODE][NODE] = {     {0, 1, 0, 0, 0},     {1, 0, 1, 1, 0},     {0, 1, 0, 0, 1},     {0, 1, 0, 0, 1},     {0, 0, 1, 1, 0} }; bool dfs(int vertex, set<int>&visited, int parent) {     visited.insert(vertex);     for(int v = 0; v

आउटपुट

The graph has cycle.

  1. C++ प्रोग्राम: जांचें कि अनिर्देशित ग्राफ (Undirected Graph) में यूलरियन पथ है या नहीं C++ प्रोग्राम: जांचें कि अनिर्देशित ग्राफ (Undirected Graph) में यूलरियन पथ है या नहीं

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

  1. C++ प्रोग्राम: जांचें कि अनिर्देशित ग्राफ में यूलरियन साइकिल है या नहीं C++ प्रोग्राम: जांचें कि अनिर्देशित ग्राफ में यूलरियन साइकिल है या नहीं

    यूलर सर्किट के बारे में जानने के लिए, हमें यूलर पथ के बारे में पता होना चाहिए। यूलर पथ एक ऐसा पथ है जिसके द्वारा हम प्रत्येक नोड को ठीक एक बार विजिट कर सकते हैं। हम समान एज का उपयोग कई बार कर सकते हैं। यूलर सर्किट यूलर पथ का एक विशेष प्रकार है। जब यूलर पथ का प्रारंभिक वर्टेक्स उस पथ के अंतिम वर्टेक

  1. पायथन प्रोग्राम: निर्देशित ग्राफ में चक्र का पता लगाएं पायथन प्रोग्राम: निर्देशित ग्राफ में चक्र का पता लगाएं

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक निर्देशित ग्राफ दिया गया है, हमें जांचना है कि ग्राफ में चक्र है या नहीं। आउटपुट सच होना चाहिए यदि दिया गया ग्राफ कम से कम एक चक्र रखता है, अन्यथा गलत। उदाहरण # collections मॉड्यूल from collections import defaultdict # ग्र