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

C++ प्रोग्राम: रैंडम एज जनरेशन का उपयोग करके रैंडम ग्राफ बनाएं


इस प्रोग्राम में रैंडम वर्टेक्स और एज के लिए एक रैंडम ग्राफ जनरेट किया जाता है। इस प्रोग्राम की समय जटिलता O(v * e) है। जहां v वर्टेक्स की संख्या है और e एज की संख्या है।

एल्गोरिदम

Begin    एक फंक्शन GenRandomGraphs() विकसित करें, जिसमें 'e' एज की संख्या और 'v' वर्टेक्स की संख्या आर्गुमेंट लिस्ट में हो।       rand() फंक्शन का उपयोग करके ग्राफ के वर्टेक्स और एज की संख्या को रैंडम मान असाइन करें।       प्रत्येक वर्टेक्स के कनेक्शन प्रिंट करें, दिशा की परवाह किए बिना।       जिस वर्टेक्स की डिग्री नहीं है उसके लिए "Isolated vertex" प्रिंट करें। End

उदाहरण

#include<iostream> #include<stdlib.h> using namespace std; void GenRandomGraphs(int NOEdge, int NOVertex) {    int i, j, edge[NOEdge][2], count;    i = 0;    //rand() का उपयोग करके ग्राफ के वर्टेक्स और एज की संख्या को रैंडम मान असाइन करें।    while(i < NOEdge)    {       edge[i][0] = rand()%NOVertex+1;       edge[i][1] = rand()%NOVertex+1;       //प्रत्येक वर्टेक्स के कनेक्शन प्रिंट करें, दिशा की परवाह किए बिना।       if(edge[i][0] == edge[i][1])          continue;       else       {          for(j = 0; j < i; j++)          {             if((edge[i][0] == edge[j][0] &&             edge[i][1] == edge[j][1]) || (edge[i][0] == edge[j][1] &&             edge[i][1] == edge[j][0]))             i--;          }       }i       ++;    }    cout<<"\nThe generated random graph is: ";    for(i = 0; i < NOVertex; i++)    {       count = 0;       cout<<"\n\t"<<i+1<<"-> { ";       for(j = 0; j < NOEdge; j++)       {          if(edge[j][0] == i+1)          {             cout<<edge[j][1]<<" ";             count++;          } else if(edge[j][1] == i+1)          {             cout<<edge[j][0]<<" ";             count++;          } else if(j== NOEdge-1 && count == 0)          cout<<"Isolated Vertex!"; //जिस वर्टेक्स की डिग्री नहीं है उसके लिए "Isolated vertex" प्रिंट करें।       }       cout<<" }";    } } int main() {    int i, e, n;    cout<<"Random graph generation: ";    n= 7 + rand()%6;    cout<<"\nThe graph has "<<n<<" vertices";    e = rand()%((n*(n-1))/2);    cout<<"\nand has "<<e<<" edges.";    GenRandomGraphs(e, n); }

आउटपुट

Random graph generation: The graph has 8 vertices and has 18 edges. The generated random graph is: 1-> { 5 4 2 } 2-> { 4 8 6 3 1 5 } 3-> { 5 4 7 2 } 4-> { 2 3 7 1 8 5 } 5-> { 3 1 7 4 2 8 } 6-> { 2 8 7 } 7-> { 4 3 5 6 } 8-> { 2 6 4 5 }

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

    एक ग्राफ का एडजेसेंसी लिस्ट प्रतिनिधित्व एक लिंक्ड लिस्ट प्रतिनिधित्व है। इस प्रतिनिधित्व में हमारे पास लिस्ट्स का एक ऐरे होता है। ऐरे का आकार V होता है। यहां V वर्टेक्स की संख्या है। दूसरे शब्दों में, हम कह सकते हैं कि हमारे पास V संख्या की अलग-अलग लिस्ट्स को स्टोर करने के लिए एक ऐरे है। यदि एक लि

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

    एक ग्राफ का इन्सिडेंस मैट्रिक्स ग्राफ को मेमोरी में स्टोर करने का एक और प्रतिनिधित्व है। यह मैट्रिक्स एक वर्ग मैट्रिक्स नहीं है। इन्सिडेंस मैट्रिक्स का ऑर्डर V x E होता है। जहां V वर्टेक्स की संख्या है और E ग्राफ में एज की संख्या है। इस मैट्रिक्स की प्रत्येक पंक्ति में हम वर्टेक्स रखते हैं, और प्रत

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

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