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

पता लगाएँ कि क्या एक अप्रत्यक्ष ग्राफ़ में C++ में दिए गए आकार का एक स्वतंत्र सेट है

अवधारणा

किसी दिए गए अप्रत्यक्ष ग्राफ के संबंध में, सत्यापित करें कि क्या इसमें l आकार का एक स्वतंत्र सेट है। यदि आकार का एक स्वतंत्र सेट मौजूद है तो 'हां' प्रिंट करें, अन्यथा 'नहीं' प्रिंट करें। यह ध्यान दिया जाना चाहिए कि ग्राफ में एक स्वतंत्र सेट को शिखर के एक सेट के रूप में परिभाषित किया जाता है जो सीधे एक दूसरे से जुड़े नहीं होते हैं।

इनपुट

L = 4,
graph = [[1, 0, 1, 0, 0],
[0, 1, 1, 0, 0],[1, 1, 1, 1, 1],
[0, 0, 1, 1, 0],[0, 0, 1, 0, 1]];

आउटपुट

Yes

पता लगाएँ कि क्या एक अप्रत्यक्ष ग्राफ़ में C++ में दिए गए आकार का एक स्वतंत्र सेट है

उपरोक्त ग्राफ में आकार 4 का एक स्वतंत्र सेट है (शीर्ष 0, 1, 3, 4 एक दूसरे से सीधे जुड़े नहीं हैं)। इसलिए आउटपुट 'हां' है।

इनपुट

L = 4,
graph =[[1, 1, 1, 0, 0],[1, 1, 1, 0, 0],[1, 1, 1, 1, 1],[0, 0, 1, 1, 0],[0, 0, 1, 0, 1]];

आउटपुट

No

पता लगाएँ कि क्या एक अप्रत्यक्ष ग्राफ़ में C++ में दिए गए आकार का एक स्वतंत्र सेट है

आरेख में, उपरोक्त ग्राफ़ में आकार 4 का एक स्वतंत्र सेट नहीं है। इसलिए आउटपुट 'नहीं' है।

विधि

  • सबसे पहले, एक वैरिएबल सोल को बूलियन फाल्स वैल्यू के साथ इनिशियलाइज़ करें।
  • दिए गए ग्राफ से L आकार के शीर्षों के सभी संभावित सेट निर्धारित करें।
  • यह देखा गया है कि यदि आकार l का एक स्वतंत्र सेट मिलता है, तो सोल के मान को ट्रू में बदलें और वापस लौटें।
  • अन्यथा अन्य संभावित सेटों की जांच जारी रखें।
  • अंत में, यदि सोल सत्य है, तो 'हां' प्रिंट करें अन्यथा 'नहीं' प्रिंट करें।

उदाहरण

// C++ code to check if a given graph
// contains an independent set of size k
#include <bits/stdc++.h>
using namespace std;
// Shows function prototype
bool check1(int[][5], vector<int>&, int);
// Shows function to construct a set of given size l
bool func(int graph1[][5], vector<int>&arr1,
int l, int index1, bool sol1[]){
   // Verify if the selected set is independent or not.
   // Used to change the value of sol to True and return
   // if it is independent
      if (l == 0){
         if (check1(graph1, arr1, arr1.size())){
            sol1[0] = true;
            return true;
         }
      }
      else{
         // Now set of size l can be formed even if we don't
         // include the vertex at current index.
         if (index1 >= l){
            vector<int> newvec(arr1.begin(), arr1.end());
            newvec.push_back(index1);
            return (func(graph1, newvec, l - 1,
            index1 - 1, sol1) or
            func(graph1, arr1, l, index1 - 1, sol1));
         }
            // Now set of size l cannot be formed if we don't
         // include the vertex at current index.
         else{
            arr1.push_back(index1);
            return func(graph1, arr1, l - 1,
            index1 - 1, sol1);
         }
      }
   }
   // Shows function to verify if the given set is
   // independent or not
   // arr --> set of size l (contains the
   // index of included vertex)
   bool check1(int graph1[][5], vector<int>&arr1, int n1){
      // Verify if each vertex is connected to any other
         // vertex in the set or not
      for (int i = 0; i < n1; i++)
         for (int j = i + 1; j < n1; j++)
            if (graph1[arr1[i]][arr1[j]] == 1)
            return false;
      return true;
}
// Driver Code
int main(){
   int graph1[][5] = {{1, 0, 1, 0, 0},{0, 1, 1, 0, 0},{1, 1, 1, 1, 1},{0, 0, 1, 1, 0},
      {0, 0, 1, 0, 1}};
      int l = 4;
      vector<int> arr1; // Empty set
      bool sol1[] = {false};
      int n1 = sizeof(graph1) /
      sizeof(graph1[0]);
      func(graph1, arr1, l, n1 - 1, sol1);
      if (sol1[0])
         cout << "Yes" << endl;
      else
         cout << "No" << endl;
      return 0;
}

आउटपुट

Yes

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

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

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

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

  1. पता लगाएं कि क्या एक अप्रत्यक्ष ग्राफ में पायथन में दिए गए आकार का एक स्वतंत्र सेट है

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