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

ग्राफ़ का सकर्मक समापन


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

ग्राफ़ का सकर्मक समापन


अंतिम मैट्रिक्स बूलियन प्रकार है। जब वर्टेक्स u से वर्टेक्स v के लिए मान 1 होता है, तो इसका मतलब है कि u से v तक कम से कम एक पथ है।

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

Input:
1 1 0 1
0 1 1 0
0 0 1 1
0 0 0 1

Output:
The matrix of transitive closure
1 1 1 1
0 1 1 1
0 0 1 1
0 0 0 1

एल्गोरिदम

transColsure(graph)

इनपुट: दिया गया ग्राफ।
आउटपुट: ट्रांजिटिव क्लोजर मैट्रिक्स।

Begin
   copy the adjacency matrix into another matrix named transMat
   for any vertex k in the graph, do
      for each vertex i in the graph, do
         for each vertex j in the graph, do
            transMat[i, j] := transMat[i, j] OR (transMat[i, k]) AND transMat[k, j])
         done
      done
   done
   Display the transMat
End

<2>उदाहरण

#include<iostream>
#include<vector>
#define NODE 4
using namespace std;

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

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

int result[NODE][NODE];

void transClosure() {
   for(int i = 0; i<NODE; i++)
      for(int j = 0; j<NODE; j++)
         result[i][j] = graph[i][j];    //initially copy the graph to the result matrix
   for(int k = 0; k<NODE; k++)
      for(int i = 0; i<NODE; i++)
         for(int j = 0; j<NODE; j++)
            result[i][j] = result[i][j] || (result[i][k] && result[k][j]);
   for(int i = 0; i<NODE; i++) {          //print the result matrix
      for(int j = 0; j<NODE; j++)
         cout << result[i][j] << " ";
      cout << endl;
   }
}

int main() {
   transClosure();
}

आउटपुट

1 1 1 1
0 1 1 1
0 0 1 1
0 0 0 1

  1. एक अप्रत्यक्ष ग्राफ में चक्र का पता लगाएं

    यह पता लगाने के लिए कि अप्रत्यक्ष ग्राफ में कोई चक्र है या नहीं, हम दिए गए ग्राफ के लिए DFS ट्रैवर्सल का उपयोग करेंगे। प्रत्येक देखे गए शीर्ष v के लिए, जब हमें कोई आसन्न शीर्ष u मिलता है, जैसे कि आप पहले ही जा चुके हैं, और u शीर्ष v का जनक नहीं है। तब एक चक्र का पता लगाया जाता है। हम मान लेंगे क

  1. स्टार ग्राफ के लिए जाँच करें

    एक ग्राफ दिया गया है; हमें जांचना है कि दिया गया ग्राफ स्टार ग्राफ है या नहीं। ग्राफ को पार करते हुए, हमें यह पता लगाना है कि शीर्षों की संख्या एक है, और शीर्षों की संख्या, जिनकी डिग्री n-1 है। (यहाँ n दिए गए ग्राफ़ में शीर्षों की संख्या है)। जब डिग्री 1 वाले शीर्षों की संख्या n-1 है और डिग्री (n-1

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

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