|

Metode de Reprezentare a Grafurilor: Matricea de Incidență 26


1. Ce este Matricea de Incidență?

Matricea de incidență este o metodă de reprezentare a unui graf (neorientat sau orientat) utilizând o matrice III de dimensiune ∣V∣×∣E∣|V| \times |E|∣V∣×∣E∣, unde:

  • ∣V∣|V|∣V∣ este numărul de noduri ale grafului.
  • ∣E∣|E|∣E∣ este numărul de muchii (sau arce) ale grafului.

2. Definiție

Pentru un graf G=(V,E)G = (V, E)G=(V,E):

  • În cazul unui graf neorientat, I[i][j]=1I[i][j] = 1I[i][j]=1 dacă nodul viv_ivi​ este incident la muchia eje_jej​.
  • În cazul unui graf orientat:
    • I[i][j]=−1I[i][j] = -1I[i][j]=−1 dacă nodul viv_ivi​ este nodul de origine al arcului eje_jej​.
    • I[i][j]=1I[i][j] = 1I[i][j]=1 dacă nodul viv_ivi​ este nodul de destinație al arcului eje_jej​.
    • I[i][j]=0I[i][j] = 0I[i][j]=0 altfel.

3. Caracteristici

  1. Grafuri neorientate:
    • Matricea conține doar valori binare (0 și 1).
    • O muchie este reprezentată de două elemente de valoare 1.
  2. Grafuri orientate:
    • Matricea poate conține valori −1,0-1, 0−1,0 și 111.
    • Arcele au direcții bine definite, iar matricea reflectă această orientare.
  3. Grafuri ponderate:
    • Valorile din matrice pot reprezenta greutățile muchiilor în loc de valori binare.

4. Exemplu pentru Grafuri Neorientate


Graf:

1–2

|   |

4–3

Reprezentare:

  • Noduri: V={1,2,3,4}V = \{1, 2, 3, 4\}V={1,2,3,4}
  • Muchii: E={e1={1,2},e2={1,4},e3={2,3},e4={3,4}}E = \{e_1 = \{1, 2\}, e_2 = \{1, 4\}, e_3 = \{2, 3\}, e_4 = \{3, 4\}\}E={e1​={1,2},e2​={1,4},e3​={2,3},e4​={3,4}}

Matricea de incidență:

    e1 e2 e3 e4

1:   1  1  0  0

2:   1  0  1  0

3:   0  0  1  1

4:   0  1  0  1


5. Exemplu pentru Grafuri Orientate


Graf:

(1) → (2)

 ↑      ↓

(4) ← (3)

Reprezentare:

  • Noduri: V={1,2,3,4}V = \{1, 2, 3, 4\}V={1,2,3,4}
  • Arce: E={e1=(1,2),e2=(3,4),e3=(4,1),e4=(2,3)}E = \{e_1 = (1, 2), e_2 = (3, 4), e_3 = (4, 1), e_4 = (2, 3)\}E={e1​=(1,2),e2​=(3,4),e3​=(4,1),e4​=(2,3)}

Matricea de incidență:

    e1  e2  e3  e4

1:  -1   0   1   0

2:   1   0   0  -1

3:   0  -1   0   1

4:   0   1  -1   0


6. Avantaje și Dezavantaje

AvantajeDezavantaje
Reprezentare simplă a conexiunilor dintre noduri și muchii.Necesită spațiu mai mare (( O(
Ușor de utilizat pentru calcule matematice și algoritmi.Ineficient pentru grafuri sparse sau foarte mari.
Compatibilitate cu grafuri orientate și ponderate.Traversarea vecinilor unui nod necesită timp ( O(

7. Implementare în C++


1. Matricea de incidență pentru graf neorientat

#include <iostream>

using namespace std;

void afisareMatrice(int n, int m, int matrice[100][100]) {

    for (int i = 0; i < n; i++) {

        for (int j = 0; j < m; j++) {

            cout << matrice[i][j] << ” „;

        }

        cout << endl;

    }

}

int main() {

    int n = 4; // Numărul de noduri

    int m = 4; // Numărul de muchii

    int matrice[100][100] = {0};

    // Adăugare muchii

    matrice[0][0] = 1; matrice[1][0] = 1; // Muchie e1 = {1, 2}

    matrice[0][1] = 1; matrice[3][1] = 1; // Muchie e2 = {1, 4}

    matrice[1][2] = 1; matrice[2][2] = 1; // Muchie e3 = {2, 3}

    matrice[2][3] = 1; matrice[3][3] = 1; // Muchie e4 = {3, 4}

    cout << „Matricea de incidență pentru graful neorientat:\n”;

    afisareMatrice(n, m, matrice);

    return 0;

}


2. Matricea de incidență pentru graf orientat

#include <iostream>

using namespace std;

void afisareMatrice(int n, int m, int matrice[100][100]) {

    for (int i = 0; i < n; i++) {

        for (int j = 0; j < m; j++) {

            cout << matrice[i][j] << ” „;

        }

        cout << endl;

    }

}

int main() {

    int n = 4; // Numărul de noduri

    int m = 4; // Numărul de arce

    int matrice[100][100] = {0};

    // Adăugare arce

    matrice[0][0] = -1; matrice[1][0] = 1; // Arc e1 = (1, 2)

    matrice[2][1] = -1; matrice[3][1] = 1; // Arc e2 = (3, 4)

    matrice[3][2] = -1; matrice[0][2] = 1; // Arc e3 = (4, 1)

    matrice[1][3] = -1; matrice[2][3] = 1; // Arc e4 = (2, 3)

    cout << „Matricea de incidență pentru graful orientat:\n”;

    afisareMatrice(n, m, matrice);

    return 0;

}


8. Aplicații ale Matricei de Incidență

  1. Analiza conexiunilor nodurilor:
    Matricea de incidență facilitează analiza conexiunilor dintre noduri și muchii.
  2. Probleme de flux:
    Este utilizată pentru calcularea fluxului maxim în rețele orientate.
  3. Reprezentarea ponderată:
    Matricea poate fi extinsă pentru a include greutăți asociate muchiilor/arcelor.

9. Concluzie

  • Matricea de incidență este o metodă eficientă de reprezentare pentru grafuri dense sau pentru probleme care implică analiza muchiilor/arcelor.
  • Este mai puțin eficientă pentru grafuri sparse sau foarte mari, comparativ cu alte metode (ex.: lista de adiacență).
  • Alegerea metodei de reprezentare depinde de tipul de problemă și de proprietățile grafului.

Similar Posts

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *