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

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


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

फंक्शन और स्यूडोकोड

Begin    1. isSafe() फंक्शन विकसित करें यह जांचने के लिए कि वर्तमान रंग असाइनमेंट वर्टेक्स v के लिए सुरक्षित है या नहीं, यानी जांचें कि एज मौजूद है या नहीं।       यदि मौजूद है, तो अगला जांचें कि नए वर्टेक्स में भरा जाने वाला रंग पहले से ही इसके आसन्न वर्टेक्स द्वारा उपयोग किया गया है या नहीं।    2. function graphColoringtil(bool g[V][V], int k, int col[], int v) :       g[V][V] = यह एक 2D ऐरे है जहां V ग्राफ में वर्टेक्स की संख्या है       k = उपयोग किए जा सकने वाले रंगों की अधिकतम संख्या।       col[] = एक कलर ऐरे जिसमें 1 से m तक की संख्याएं होनी चाहिए।       if v == V       return true       For c = 1 to k       if (isSafe(v, g, col, c))          col[v] = c          if (graphColoringtil (g, k, col, v+1) == true)             return true          col[v] = 0       return false    3.function graphColoring(bool g[V][V], int k):    for i = 0 to V-1       color[i] = 0       if (graphColoringtil(g, k, color, 0) == false)    return false return true

उदाहरण

#include <iostream> #include <cstdio> #define V 4 using namespace std; bool isSafe (int v, bool g[V][V], int col[], int C) // m कलरिंग प्रॉब्लम को हल करने के लिए {    for (int i = 0; i < V; i++)       if (g[v][i] && C == col[i])       return false;    return true; } bool graphColoringtil(bool g[V][V], int k, int col[], int v) {    if (v == V) // यदि सभी वर्टेक्स को एक रंग असाइन किया गया है तो    return true;    for (int c = 1; c <= k; c++) // इस वर्टेक्स v पर विचार करें और विभिन्न रंगों को आजमाएं    {       if (isSafe(v, g, col, c)) // जांचें कि वर्टेक्स v को रंग c असाइन करना ठीक है       {          col[v] = c;          if (graphColoringtil (g, k, col, v+1) == true) // शेष वर्टेक्स को रंग असाइन करने के लिए पुनरावृत्ति करें          return true;          col[v] = 0; // यदि रंग c असाइन करने से समाधान नहीं निकलता तो इसे हटा दें       }    }    return false; }

आउटपुट

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

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

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

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

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

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