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

सी ++ प्रोग्राम आसन्न सूची का उपयोग करके ग्राफ़ का प्रतिनिधित्व करने के लिए

एक ग्राफ की आसन्न सूची प्रतिनिधित्व लिंक्ड सूची प्रतिनिधित्व है। इस निरूपण में हमारे पास सूचियों की एक सरणी है सरणी का आकार V है। यहाँ V शीर्षों की संख्या है। दूसरे शब्दों में, हम कह सकते हैं कि हमारे पास विभिन्न सूचियों के V नंबर को संग्रहीत करने के लिए एक सरणी है। यदि कोई सूची शीर्षलेख u वर्टेक्स है, तो यह दर्शाता है कि यह u के सभी आसन्न शीर्षों को धारण करेगा।

आसन्नता सूची प्रतिनिधित्व की जटिलता

  • यह प्रतिनिधित्व अप्रत्यक्ष ग्राफ के लिए O(V+2E) लेता है, और निर्देशित ग्राफ के लिए O(V+E) लेता है। यदि किनारों की संख्या बढ़ा दी जाती है, तो आवश्यक स्थान भी बढ़ जाएगा।

इनपुट:

सी ++ प्रोग्राम आसन्न सूची का उपयोग करके ग्राफ़ का प्रतिनिधित्व करने के लिए

आउटपुट:

सी ++ प्रोग्राम आसन्न सूची का उपयोग करके ग्राफ़ का प्रतिनिधित्व करने के लिए

एल्गोरिदम

add_edge(adj_list, u, v)

इनपुट - किनारे का u और v {u,v}, और आसन्नता सूची

आउटपुट - ग्राफ़ G की आसन्नता सूची

Begin
   Append v into the list at index u
   Append u into the list at index v
End

उदाहरण कोड

#include<iostream>
#include<list>
#include<iterator>
using namespace std;
void displayAdjList(list<int> adj_list[], int v) {
  for(int i = 0; i<v; i++) {
     cout << i << "--->";
     list<int> :: iterator it;
     for(it = adj_list[i].begin(); it != adj_list[i].end(); ++it) {
        cout << *it << " ";
     }
     cout << endl;
   }
}
void add_edge(list<int> adj_list[], int u, int v) {   //add v into the list u, and u into list v
   adj_list[u].push_back(v);
   adj_list[v].push_back(u);
}
main(int argc, char* argv[]) {
   int v = 6;      //there are 6 vertices in the graph
   //create an array of lists whose size is 6
   list<int> adj_list[v];
   add_edge(adj_list, 0, 4);
   add_edge(adj_list, 0, 3);
   add_edge(adj_list, 1, 2);
   add_edge(adj_list, 1, 4);
   add_edge(adj_list, 1, 5);
   add_edge(adj_list, 2, 3);
   add_edge(adj_list, 2, 5);
   add_edge(adj_list, 5, 3);
   add_edge(adj_list, 5, 4);
   displayAdjList(adj_list, v);
}

आउटपुट

0--->4 3
1--->2 4 5
2--->1 3 5
3--->0 2 5
4--->0 1 5
5--->1 2 3 4

  1. C++ प्रोग्राम इंसीडेंस मैट्रिक्स का उपयोग करके ग्राफ का प्रतिनिधित्व करने के लिए

    एक ग्राफ की घटना मैट्रिक्स मेमोरी में स्टोर करने के लिए ग्राफ का एक और प्रतिनिधित्व है। यह मैट्रिक्स एक वर्ग मैट्रिक्स नहीं है। आपतन मैट्रिक्स का क्रम V x E है। जहाँ V शीर्षों की संख्या है और E ग्राफ़ में किनारों की संख्या है। इस मैट्रिक्स की प्रत्येक पंक्ति में हम कोने रख रहे हैं, और प्रत्येक कॉलम

  1. सी ++ प्रोग्राम आसन्न मैट्रिक्स का उपयोग करके ग्राफ का प्रतिनिधित्व करने के लिए

    एक ग्राफ का आसन्न मैट्रिक्स आकार V x V का एक वर्ग मैट्रिक्स है। V, ग्राफ G के शीर्षों की संख्या है। इस मैट्रिक्स में प्रत्येक पक्ष में V कोने चिह्नित हैं। यदि ग्राफ़ में i से j कोने तक कुछ किनारे हैं, तो ith पर आसन्न मैट्रिक्स में पंक्ति और जम्मूवें कॉलम में यह 1 (या भारित ग्राफ़ के लिए कुछ गैर-शून्

  1. सी++ प्रोग्राम डीएफएस का उपयोग करके निर्देशित ग्राफ की कनेक्टिविटी की जांच करने के लिए

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