Che cos'è un grafo?
Lezione 2 di 14 del corso Grafi - Serie sulle strutture dati #9 di Coddy.
Un grafo è una struttura dati che modella un insieme di elementi e le connessioni tra di essi. Gli elementi sono chiamati vertici (o nodi) e le connessioni sono chiamate archi.
I grafi sono ovunque. I social network sono grafi (le persone sono vertici, le amicizie sono archi). Le mappe stradali sono grafi (gli incroci sono vertici, le strade sono archi). Internet, gli alberi delle dipendenze e le mappe dei giochi sono tutti grafi.
In questo corso ci concentriamo su un grafo non orientato: se un arco collega u e v, allora anche v è collegato a u. Non c'è una direzione. Useremo numeri interi come chiavi dei vertici, per mantenere le cose semplici.
Internamente memorizzeremo il grafo come una lista di adiacenza: una mappa da ogni vertice alla lista dei suoi vicini. In questo modo, per cercare i vicini di un vertice basta un singolo accesso alla mappa, che è ciò di cui hanno bisogno la maggior parte degli algoritmi sui grafi.
Le operazioni che implementeremo nella nostra classe Graph sono:
- addVertex: Aggiungi un nuovo vertice senza archi.
- addEdge: Collega due vertici.
- hasEdge: Verifica se due vertici sono collegati.
- getNeighbors: Ottieni la lista dei vicini di un vertice.
- removeEdge: Scollega due vertici.
- size: Conta quanti vertici ha il grafo.
Costruiamo una classe Graph!
Provalo tu
Questa lezione non include una sfida di codice.
Tutte le lezioni di Grafi - Serie sulle strutture dati #9
Esercitati da solo: Compilatore C online