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

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


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

इस मैट्रिक्स की प्रत्येक पंक्ति में हम वर्टेक्स रखते हैं, और प्रत्येक कॉलम में एज रखे जाते हैं। इस प्रतिनिधित्व में एक एज e {u, v} के लिए, इसे कॉलम e के स्थान u और v के लिए 1 द्वारा मार्क किया जाएगा।

एडजेसेंसी मैट्रिक्स प्रतिनिधित्व की जटिलता

  • इन्सिडेंस मैट्रिक्स प्रतिनिधित्व गणना के दौरान O(V x E) मात्रा में स्पेस लेता है। पूर्ण ग्राफ के लिए एज की संख्या V(V-1)/2 होगी। इसलिए इन्सिडेंस मैट्रिक्स मेमोरी में अधिक स्पेस लेता है।

इनपुट

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

आउटपुट


E0
E1
E2
E3
E4
E5
E6
E7
E8
0
1
1
0
0
0
0
0
0
0
1
0
0
1
1
1
0
0
0
0
2
0
0
1
0
0
1
1
0
0
3
0
1
0
0
0
1
0
1
0
4
1
0
0
1
0
0
0
0
1
5
0
0
0
0
1
0
1
1
1

एल्गोरिदम

add_edge(u, v)

इनपुट - एक एज {u,v} के u और v

आउटपुट - ग्राफ G का इन्सिडेंस मैट्रिक्स

सबसे पहले, इन्सिडेंस मैट्रिक्स के लिए एज काउंट ed_cnt 0 है।

Begin
    ed_cnt := ed_cnt + 1
    inc_matrix[u, ed_cnt] := 1
    inc_matrix[v, ed_cnt] := 1
End

उदाहरण कोड (C++)

#include <iostream>
using namespace std;

int inc_arr[20][20]; // इन्सिडेंस मैट्रिक्स रखने के लिए प्रारंभिक ऐरे
int ed_no = 0;

void displayMatrix(int v, int e) {
    int i, j;
    for (i = 0; i < v; i++) {
        for (j = 0; j < e; j++) {
            cout << inc_arr[i][j] << " ";
        }
        cout << endl;
    }
}

void add_edge(int u, int v) {
    // एज नंबर के साथ मैट्रिक्स में एज जोड़ने का फंक्शन
    inc_arr[u][ed_no] = 1;
    inc_arr[v][ed_no] = 1;
    ed_no++; // एज नंबर बढ़ाएं
}

main(int argc, char* argv[]) {
    int v = 6; // ग्राफ में 6 वर्टेक्स हैं
    int e = 9; // ग्राफ में 9 एज हैं
    add_edge(0, 4);
    add_edge(0, 3);
    add_edge(1, 2);
    add_edge(1, 4);
    add_edge(1, 5);
    add_edge(2, 3);
    add_edge(2, 5);
    add_edge(5, 3);
    add_edge(5, 4);
    displayMatrix(v, e);
}

आउटपुट

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

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

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

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

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

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

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