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

सबसे बड़ी स्वतंत्र सेट समस्या


स्वतंत्र सेट सभी बाइनरी ट्री नोड्स का सबसेट है जब उस सबसेट में किन्हीं दो नोड्स के बीच कोई किनारा नहीं होता है।

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

इनपुट और आउटपुट

Input:
A binary tree.
सबसे बड़ी स्वतंत्र सेट समस्या 
Output:
Size of the Largest Independent Set is: 5

एल्गोरिदम

longSetSize(root)

इस एल्गोरिथम में बाइनरी ट्री बनेगा, उस ट्री का हर नोड डेटा और सेटसाइज को होल्ड करेगा।

इनपुट - बाइनरी ट्री का रूट नोड.

आउटपुट - सबसे लंबे सेट का आकार.

Begin
   if root = φ, then
      return 0
   if setSize(root) ≠ 0, then
      setSize(root)
   if root has no child, then
      setSize(root) := 1
      return setSize(root)
   setSizeEx := longSetSize(left(root)) + longSetSize(right(root)) //excluding root
   setSizeIn := 1

   if left child exists, then
      setSizeIn := setSizeIn + longSetSize(left(left(root))) + longSetSize(left(right(root)))

   if right child exists, then
      setSizeIn := setSizeIn + longSetSize(right(left(root))) + longSetSize(right(right(root)))

   if setSizeIn > setSizeEx, then
      setSize(root) := setSizeIn
   else
      setSize(root) := setSizeEx

   return setSize(root)
End

उदाहरण

#include <iostream>
using namespace std;

struct node {
   int data;
   int setSize;
   node *left, *right;
};

int longSetSize(node *root) {
   if (root == NULL)
      return 0;

   if (root->setSize != 0)
      return root->setSize;

   if (root->left == NULL && root->right == NULL)    //when there is no child
      return (root->setSize = 1);

   // set size exclusive root is set size of left and set size of right

   int setSizeEx = longSetSize(root->left) + longSetSize(root->right);
   int setSizeIn = 1;             //inclusive root node

   if (root->left)               //if left sub tree is present
      setSizeIn += longSetSize(root->left->left) + longSetSize(root->left->right);

   if (root->right)                //if right sub tree is present
      setSizeIn += longSetSize(root->right->left) +longSetSize(root->right->right);
   root->setSize = (setSizeIn>setSizeEx)?setSizeIn:setSizeEx;

   return root->setSize;
}

struct node* getNode(int data) {          //create a new node with given data
   node* newNode = new node;
   newNode->data = data;
   newNode->left = newNode->right = NULL;
   newNode->setSize = 0;

   return newNode;
}

int main() {
   node *root = getNode(20);
   root->left = getNode(8);
   root->left->left = getNode(4);
   root->left->right = getNode(12);
   root->left->right->left = getNode(10);
   root->left->right->right = getNode(14);
   root->right = getNode(22);

   root->right->right = getNode(25);
   cout << "Size of the Largest Independent Set is: " << longSetSize(root);
}

आउटपुट

Size of the Largest Independent Set is − 5

  1. वर्टेक्स कवर समस्या

    अप्रत्यक्ष ग्राफ़ के लिए, शीर्ष आवरण शीर्षों का एक उपसमुच्चय होता है, जहां ग्राफ़ के प्रत्येक किनारे (u, v) के लिए या तो u या v सेट में होता है। बाइनरी ट्री का उपयोग करके, हम आसानी से वर्टेक्स कवर की समस्या को हल कर सकते हैं। इस समस्या को दो उप-समस्याओं में विभाजित किया जा सकता है। जब जड़ शीर्ष आव

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

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

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

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