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

सी ++ प्रोग्राम विजिंग के प्रमेय को लागू करने के लिए

विजिंग का प्रमेय बताता है कि साधारण ग्राफ का वर्णक्रमीय सूचकांक या तो अधिकतम डिग्री या अधिकतम डिग्री + 1 हो सकता है। यहां, वर्णक्रमीय अनुक्रमणिका का अर्थ है ग्राफ़ के किनारे के रंग के लिए आवश्यक अधिकतम रंग।

यह विजिंग के प्रमेय को लागू करने के लिए एक C++ प्रोग्राम है।

एल्गोरिदम

Begin
   Take the number of vertices and edges as input.
   Take the vertex pair for the edges.
   function EdgeColor() : Color the graph edges.
      1) Assign color to current edge as c i.e. 1 initially.
      2) If the same color is occupied by any of the adjacent edges,
      then discard this color and go to flag again and try with the next color.
End

उदाहरण

#include<iostream>
using namespace std;
void EdgeColor(int ed[][3], int e) {
   int i, c, j;
   for(i = 0; i < e; i++) {
      c = 1; //Assign color to current edge 1 initially.
      // If the same color is occupied by any of the adjacent edges,
      // then discard this color and go to flag again and try next color.
      flag:
      ed[i][2] = c;
      for(j = 0; j < e; j++) {
         if(j == i)
         continue;
         if(ed[j][0] == ed[i][0] || ed[j][0] == ed[i][1] || ed[j][1] == ed[i][0] || ed[j][1] == ed[i][1]) {
            if(ed[j][2] == ed[i][2]) {
               c++;
               goto flag;
            }
         }
      }
   }
}
int main() {
   int i, n, e, j, max = -1;
   cout<<"Enter the number of vertices of the graph: ";
   cin>>n;
   cout<<"Enter the number of edges of the graph: ";
   cin>>e;
   int ed[e][3], deg[n+1] = {0};
   for(i = 0; i < e; i++) {
      cout<<"\nEnter the vertex pair for edge "<<i+1;
      cout<<"\nN(1): ";
      cin>>ed[i][0];
      cout<<"N(2): ";
      cin>>ed[i][1];
      //calculate the degree of each vertex
      ed[i][2] = -1;
      deg[ed[i][0]]++;
      deg[ed[i][1]]++;
   }
   //find out the maximum degree.
   for(i = 1; i <= n; i++) {
      if(max < deg[i])
      max = deg[i];
   }
   EdgeColor(ed , e);
   cout<<"\nAccording to Vizing's theorem this graph can use maximum of "<<max+1<<" colors to generate a valid edge coloring.\n\n";
   for(i = 0; i < e; i++)
   cout<<"\nThe color of the edge between vertex N(1):"<<ed[i][0]<<" and N(2):"<<ed[i][1]<<" is: color"<<ed[i][2]<<".";
}

आउटपुट

Enter the number of vertices of the graph: 4
Enter the number of edges of the graph: 3

Enter the vertex pair for edge 1
N(1): 1
N(2): 2

Enter the vertex pair for edge 2
N(1): 3
N(2): 2

Enter the vertex pair for edge 3
N(1): 4
N(2): 1

According to Vizing's theorem this graph can use maximum of 3 colors to generate a valid edge coloring.

The color of the edge between vertex N(1):1 and N(2):2 is: color1.
The color of the edge between vertex N(1):3 and N(2):2 is: color2.
The color of the edge between vertex N(1):4 and N(2):1 is: color2.

  1. सी ++ प्रोग्राम विगेनियर साइफर को लागू करने के लिए

    Vigenere Cipher, अल्फ़ाबेटिक टेक्स्ट को एन्क्रिप्ट करने की एक तरह की पॉलीअल्फ़ाबेटिक प्रतिस्थापन विधि है। इस विधि में एन्क्रिप्शन और डिक्रिप्शन के लिए Vigenere Cipher Table का उपयोग किया जाता है जिसमें A से Z तक के अक्षर 26 पंक्तियों में लिखे जाते हैं। एन्क्रिप्शन कुंजी: स्वागत है संदेश: यहिस्ट

  1. सी ++ प्रोग्राम सीजर साइफर को लागू करने के लिए

    यह एक मोनो-अल्फाबेटिक सिफर है जिसमें प्लेनटेक्स्ट के प्रत्येक अक्षर को सिफरटेक्स्ट बनाने के लिए दूसरे अक्षर द्वारा प्रतिस्थापित किया जाता है। यह प्रतिस्थापन सिफर योजना का सबसे सरल रूप है। इस क्रिप्टोसिस्टम को आमतौर पर शिफ्ट सिफर के रूप में जाना जाता है। अवधारणा प्रत्येक वर्णमाला को दूसरे वर्णमाला स

  1. AVL ट्री को लागू करने के लिए C++ प्रोग्राम

    AVL ट्री एक सेल्फ-बैलेंसिंग बाइनरी सर्च ट्री है जहां सभी नोड्स के लिए बाएं और दाएं सबट्री की ऊंचाई के बीच का अंतर एक से अधिक नहीं हो सकता है। ट्री रोटेशन एक ऐसा ऑपरेशन है जो AVL ट्री पर तत्वों के क्रम में हस्तक्षेप किए बिना संरचना को बदलता है। यह पेड़ में एक नोड को ऊपर और एक नोड को नीचे ले जाता है।