Lista di adiacenze e rappresentazione matriciale del grafico

Anche se sembrano diversi, tutti tipi di grafici possono essere rappresentati in modo simile. Esistono generalmente due tipi di rappresentazione grafica:

  1. Matrice di adiacenza
  2. Elenco di adiacenza

Elenco di adiacenza

L'elenco di adiacenza รจ costituito da elenchi collegati. Ogni vertice รจ considerato un indice di array e ogni elemento rappresenta una lista concatenata. Queste liste concatenate contengono i vertici che hanno spigoli con il vertice indice.

Ecco un esempio di elenco di adiacenze:

Elenco di adiacenza

Diciamo che un grafico contiene il numero V di vertici e il numero E di spigoli.

In generale, la complessitร  dello spazio sarร  O(V + E).

La complessitร  spaziale nel caso peggiore sarร  O(V2) se il grafico dato รจ il grafico completo

Matrice di adiacenza

La matrice di adiacenza รจ composta da un array 2D. Grafico avente un numero V di vertici, la dimensione della matrice sarร  VxV.

Dire, matrix[i][j] = 5. Significa che c'รจ un bordo tra i nodi i e j dove il peso รจ 5.

Diamo un'occhiata al seguente grafico e alla sua matrice di adiacenza:

Matrice di adiacenza

Abbiamo creato il file matrice 2D utilizzando questi passaggi:

Passo 1) Il vertice A ha un bordo diretto con B e il peso รจ 5. Pertanto, la cella nella riga A e la colonna B verranno riempite con 5. Il resto delle celle nella riga A verrร  riempito con zero.

Passo 2) I vertici B hanno un bordo diretto con C e il peso รจ 4. Pertanto, la cella nella riga B e nella colonna C verrร  riempita con 4. Le celle rimanenti nella riga B verranno riempite con zero poichรฉ B non ha alcun bordo uscente verso nessuno altri nodi.

Passo 3) I vertici C non hanno bordi diretti con nessun altro vertice. Quindi, la riga C sarร  riempita con zeri.

Passo 4) Il vertice D ha un bordo diretto con A e C.

  • Qui, la cella nella riga D e nella colonna A avrร  un valore pari a 7. Le celle nella riga D e nella colonna C avranno un valore pari a 2.
  • Il resto delle celle nella riga D verrร  riempito con zeri.

Passo 5) I vertici E hanno un bordo diretto con B e D. La cella nella riga E e nella colonna B avrร  un valore di 6. Le celle nella riga E e nella colonna D avranno un valore di 3. Il resto delle celle nella riga D sarร  pieno di zeri.

Ecco alcuni punti da notare:

  • Il grafico non ha self-loop quando la diagonale primaria della matrice di adiacenza รจ 0.
  • Il grafico รจ un grafico orientato se gli indici (a,b) e (b,a) non hanno lo stesso valore. Altrimenti, il grafico รจ un grafico orientato.
  • Il grafico sarร  un grafico ponderato se il valore delle celle รจ maggiore di 1.

C'รจ qualche problema con la matrice di adiacenza poichรฉ richiede spazi quadrati. Qui memorizziamo i bordi che non sono collegati. Questi bordi allocano spazio nella memoria.

Ad esempio, se abbiamo un grafico con 100 nodi, saranno necessarie 10mila celle per memorizzarlo nel RAM. Con meno spigoli nel grafico, allocare una memoria cosรฌ grande puรฒ essere uno spreco. Quindi, la complessitร  dello spazio usando la matrice di adiacenza sarร  O(N2), dove N indica il numero di nodi nel grafico.

Riassumi questo post con: