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

C++ प्रोग्राम: BFS का उपयोग करके जांचें कि ग्राफ बाइपार्टाइट है या नहीं


एक बाइपार्टाइट ग्राफ वह ग्राफ है जिसमें ग्राफ कलरिंग दो रंगों का उपयोग करके संभव है यानी; एक सेट में वर्टेक्स को एक ही रंग से रंगा जाता है। यह एक C++ प्रोग्राम है जो BFS का उपयोग करके जांचता है कि कोई ग्राफ बाइपार्टाइट है या नहीं।

एल्गोरिदम

Begin    Function Bipartite():    1) सोर्स वर्टेक्स को एक रंग असाइन करें    2) पहले रंग को छोड़कर सभी पड़ोसियों को दूसरे रंग से रंगें।    3) पड़ोसी के पड़ोसियों को पहले रंग से रंगें।    4) इस तरह, सभी वर्टेक्स को रंग असाइन करें ताकि यह k वे कलरिंग प्रॉब्लम की सभी बाधाओं को पूरा करे जहां k = 2।    5) रंग असाइन करते समय, यदि हमें कोई पड़ोसी मिलता है जो वर्तमान वर्टेक्स के समान रंग से रंगा हुआ है, तो ग्राफ को 2 वर्टेक्स से रंगा नहीं जा सकता यानी; ग्राफ बाइपार्टाइट नहीं है End

उदाहरण

#include <iostream> #include <queue> #define V 5 using namespace std; bool Bipartite(int G[][V], int s) {    int colorA[V];    for (int i = 0; i < V; ++i)    colorA[i] = -1;    colorA[s] = 1; // सोर्स वर्टेक्स को एक रंग असाइन करें    queue <int> q; // वर्टेक्स नंबर की एक क्यू बनाएं और BFS ट्रैवर्सल के लिए सोर्स वर्टेक्स को एनक्यू करें    q.push(s);    while (!q.empty()) {       int w = q.front(); // एक वर्टेक्स डी-क्यू करें       q.pop();       for (int v = 0; v < V; ++v) // सभी नॉन-कलर्ड आसन्न वर्टेक्स ढूंढें {          if (G[w][v] && colorA[v] == -1) // w से v तक एक एज मौजूद है और डेस्टिनेशन v कलर्ड नहीं है {             colorA[v] = 1 - colorA[w]; // w के इस आसन्न v को वैकल्पिक रंग असाइन करें             q.push(v);          } else if (G[w][v] && colorA[v] == colorA[w]) // w से v तक एक एज मौजूद है और डेस्टिनेशन             // v उसी रंग से रंगा है जैसे u             return false;       }    }    return true; // यदि सभी आसन्न वर्टेक्स को वैकल्पिक रंग से रंगा जा सकता है } int main() {    int G[][V] = {{ 0, 1, 0, 0},                 { 1, 0, 0, 0},                 { 0, 0, 0, 1},                 { 1, 0, 1, 0}};    if (Bipartite(G, 0))       cout << "The Graph is Bipartite"<<endl;    else       cout << "The Graph is Not Bipartite"<<endl;    return 0; }

आउटपुट

The Graph is Bipartite
  1. C++ प्रोग्राम: जांचें कि क्या एक ग्राफ दृढ़ता से जुड़ा हुआ है या नहीं C++ प्रोग्राम: जांचें कि क्या एक ग्राफ दृढ़ता से जुड़ा हुआ है या नहीं

    निर्देशित ग्राफ में घटकों को दृढ़ता से जुड़ा हुआ कहा जाता है, जब एक घटक में वर्टेक्स के प्रत्येक जोड़े के बीच एक पथ होता है। इस एल्गोरिदम को हल करने के लिए, पहले, प्रत्येक वर्टेक्स का फिनिश टाइम प्राप्त करने के लिए DFS एल्गोरिदम का उपयोग किया जाता है, अब ट्रांसपोज़्ड ग्राफ का फिनिश टाइम ढूंढें, फि

  1. C++ प्रोग्राम: DFS का उपयोग करके निर्देशित ग्राफ की कनेक्टिविटी जांचना C++ प्रोग्राम: DFS का उपयोग करके निर्देशित ग्राफ की कनेक्टिविटी जांचना

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

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

    मान लीजिए हमारे पास एक अविकल्पित ग्राफ है, हमें जांचना है कि ग्राफ द्विभाजित है या नहीं। जैसा कि हम जानते हैं, एक ग्राफ द्विभाजित होता है जब हम ग्राफ के नोड्स को दो सेट A और B में विभाजित कर सकते हैं ताकि ग्राफ में प्रत्येक किनारा {u,v} का एक नोड u A में और दूसरा नोड v B में हो। उदाहरण के लिए, यदि