Logo NEXUS

NEXUS didattica

← Torna indietro
Informatica / Lezione Teorico-Pratica

Lista di Adiacenza

Rappresentazione dinamica dei grafi basata su array di liste o vettori di vettori, ottimizzata per grafi sparsi e algoritmi di visita.

1. Cos'è la Lista di Adiacenza?

A differenza della matrice di adiacenza che alloca spazio per ogni possibile coppia di vertici, la lista di adiacenza mantiene un array o un vettore di dimensione $V$ (uno per ciascun vertice). Ogni elemento dell'array memorizza una lista (o un vettore dinamico) contenente esclusivamente i nodi direttamente collegati (adiacenti) a quel vertice.

2. Vantaggi, Svantaggi e Complessità Spaziale

Le liste di adiacenza rappresentano lo standard di efficienza per la maggior parte delle applicazioni pratiche sui grafi:

// Implementazione di una Lista di Adiacenza con std::vector in C++ #include <vector> #include <iostream> class AdjacencyListGraph { int V; std::vector<std::vector<int>> adjList; pùbblic: AdjacencyListGraph(int v) : V(v), adjList(v) {} void addEdge(int u, int v) { adjList[u].push_back(v); adjList[v].push_back(u); // Solo se non orientato } };

3. Simulatore Interattivo: Calcolo Spazio Liste vs Matrici

Inserisci il numero di vertici ($V$) e di archi ($E$) per confrontare l'occupazione di memoria teorica tra Lista di Adiacenza e Matrice di Adiacenza.

list-engine@nexus-core:~# Memory Comparison Simulator
> Inserisci i parametri del grafo per avviare il confronto comparativo delle strutture dati.