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

ग्राफ रंग


ग्राफ कलरिंग समस्या ग्राफ लेबलिंग का एक विशेष मामला है। इस समस्या में प्रत्येक नोड को कुछ रंगों में रंगा जाता है। लेकिन रंग भरने में कुछ अड़चनें हैं। हम किसी भी आसन्न कोने के लिए एक ही रंग का उपयोग नहीं कर सकते हैं।

ग्राफ रंग

इस समस्या को हल करने के लिए, हमें लालची एल्गोरिथ्म का उपयोग करने की आवश्यकता है, लेकिन यह न्यूनतम रंग के उपयोग की गारंटी नहीं देता है।

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

Input:
Adjacency matrix of the graph.
0 0 1 0 1
0 0 1 1 1
1 1 0 1 0
0 1 1 0 1
1 1 0 1 0

Output:
Node: 0, Assigned with Color: 0
Node: 1, Assigned with Color: 0
Node: 2, Assigned with Color: 1
Node: 3, Assigned with Color: 2
Node: 4, Assigned with Color: 1

एल्गोरिदम

graphColoring(graph)

इनपुट - दिया गया ग्राफ।

आउटपुट - प्रत्येक नोड को किसी न किसी रंग के साथ असाइन किया गया है।

Begin
   declare a list of colors
   initially set the color 0 for first node
   define an array colorUsed to track which color is used, and which colors have never used.

   for all vertices i except first one, do
      mark i as unassigned to any color
   done

   mark colorUsed to false for all vertices
   for all vertices u in the graph except 1st vertex, do
      for all vertex v adjacent with u, do
         if color[v] is unassigned, then
            mark colorUsed[color[v]] := true
      done

      for all colors col in the color list, do
         if color is not used, then
            stop the loop
      done

      color[u] := col
      for each vertex v which is adjacent with u, do
         if color[v] is unassigned, then
            colorUsed[color[v]] := false
      done
   done

   for all vertices u in the graph, do
      display the node and its color
   done
End

उदाहरण

#include<iostream>
#define NODE 6
using namespace std;

int graph[NODE][NODE] = {
   {0, 1, 1, 1, 0, 0},
   {1, 0, 0, 1, 1, 0},
   {1, 0, 0, 1, 0, 1},
   {1, 1, 1, 0, 1, 1},
   {0, 1, 0, 1, 0, 1},
   {0, 0, 1, 1, 1, 0}
};

void graphColoring() {
   int color[NODE];
   color[0] = 0;    //Assign first color for the first node
   bool colorUsed[NODE];    //Used to check whether color is used or not

   for(int i = 1; i<NODE; i++)
      color[i] = -1;    //initialize all other vertices are unassigned

   for(int i = 0; i<NODE; i++)
      colorUsed[i] = false;    //initially any colors are not chosen
         
   for(int u = 1; u<NODE; u++) {    //for all other NODE - 1 vertices
      for(int v = 0; v<NODE; v++) {
         if(graph[u][v]){
            if(color[v] != -1)    //when one color is assigned, make it unavailable
               colorUsed[color[v]] = true;
         }
     }

     int col;
     for(col = 0; col<NODE; col++)
        if(!colorUsed[col])    //find a color which is not assigned
           break;
         
     color[u] = col;    //assign found color in the list
         
     for(int v = 0; v<NODE; v++) {    //for next iteration make color availability to false
        if(graph[u][v]) {
           if(color[v] != -1)
              colorUsed[color[v]] = false;
        }
     }  
  }
   
  for(int u = 0; u<NODE; u++)
     cout <<"Color: " << u << ", Assigned with Color: " <<color[u] <<endl;
}

main() {
   graphColoring();
}

आउटपुट

Node: 0, Assigned with Color: 0
Node: 1, Assigned with Color: 0
Node: 2, Assigned with Color: 1
Node: 3, Assigned with Color: 2
Node: 4, Assigned with Color: 1

  1. एंड्रॉइड पर वयस्कों के लिए 5 सर्वश्रेष्ठ कलरिंग बुक ऐप्स

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

  1. पायथन में निर्देशित ग्राफ में सबसे बड़ा रंग मान खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास n रंगीन नोड्स और m विभिन्न किनारों के साथ एक निर्देशित ग्राफ है। और नोड्स 0 से n-1 तक गिने जाते हैं। हमारे पास लोअरकेस अक्षरों वाला एक स्ट्रिंग कॉल है, जहां col[i] इस ग्राफ (0-अनुक्रमित) में ith नोड के रंग का प्रतिनिधित्व करता है। हमारे पास एक किनारे की सूची भी है जहां किनारों

  1. पायथन में ग्राफ प्लॉटिंग

    पायथन में matplotlib पुस्तकालय का उपयोग करके रेखांकन बनाने की क्षमता है। इसमें कई पैकेज और फ़ंक्शन हैं जो विभिन्न प्रकार के ग्राफ़ और प्लॉट उत्पन्न करते हैं। इसे इस्तेमाल करना भी बहुत आसान है। यह numpy और अन्य पायथन बिल्ट-इन फ़ंक्शंस के साथ लक्ष्य को प्राप्त करता है। इस लेख में हम कुछ विभिन्न प्रकार