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

C++ प्रोग्राम यह जांचने के लिए कि क्या ग्राफ़ 2 कलर एल्गोरिथम का उपयोग करके एक द्विदलीय है

एक द्विदलीय ग्राफ एक ग्राफ है जिसमें यदि दो रंगों का उपयोग करके ग्राफ को रंगना संभव है; एक समुच्चय के शीर्षों को एक ही रंग से रंगा जाता है। यह एक C++ प्रोग्राम है जो यह जांचने के लिए है कि ग्राफ़ द्विदलीय है या 2 रंग एल्गोरिथम का उपयोग नहीं कर रहा है।

कार्य और छद्म कोड

Begin
   1. Develop function isSafe() to check if the current color assignment
      is safe for vertex v, i.e. checks whether the edge exists or not.
      If it exists, then next check whether the color to be filled in
      the new vertex is already used by its adjacent vertices.
   2. function graphColoringtil(bool g[V][V], int k, int col[], int v) :
      g[V][V] = It is a 2D array where V is the number of vertices in graph
      k = maximum number of colors that can be used.
      col[] = an color array that should have numbers from 1 to 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) //to solve m coloring //problem
{
   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) //If all vertices are assigned a color then
   return true;
   for (int c = 1; c <= k; c++) //Consider this vertex v and try different colors
   {
      if (isSafe(v, g, col, c)) //Check if assignment of color c to v is fine
      {
         col[v] = c;
         if (graphColoringtil (g, k, col, v+1) == true) //recur to assign colors to rest of the vertices
         return true;
         col[v] = 0; //If assigning color c doesn't lead to a solution then remove it
      }
   }
   return false;
}

आउटपुट

The graph is Bipartite

  1. सी ++ प्रोग्राम यह जांचने के लिए कि क्या एक अप्रत्यक्ष ग्राफ में एक यूलरियन पथ है

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

  1. C++ प्रोग्राम यह जांचने के लिए कि क्या एक अप्रत्यक्ष ग्राफ में एक यूलेरियन चक्र है

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

  1. C++ प्रोग्राम यह जांचने के लिए कि कोई ग्राफ़ मजबूती से जुड़ा है या नहीं

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