Vai al contenuto principale

Introduzione alla teoria dei grafi

Esplora le basi della teoria dei grafi con questa guida per principianti. Scopri vertici, archi e vari tipi di grafi per comprendere reti complesse e applicazioni.
Aggiornato 29 set 2026  · 10 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Come modelli le connessioni a coppie tra oggetti? 

Con una struttura matematica chiamata grafo. E questa è l’essenza della teoria dei grafi: lo studio dei grafi.  

Gli elementi fondamentali della teoria dei grafi sono i vertici (noti anche come nodi) e gli archi (noti anche come collegamenti). Un vertice rappresenta un’entità o un punto all’interno di un grafo, mentre un arco denota una connessione o una relazione tra due vertici. Insieme, questi componenti formano la struttura di un grafo, che può essere orientato o non orientato, pesato o non pesato, a seconda della natura specifica delle relazioni modellate.

In informatica, la teoria dei grafi è alla base di molti algoritmi e strutture dati usate per rappresentare reti come internet, social network e sistemi di comunicazione. Fornisce inoltre strumenti per risolvere problemi legati alla connettività di rete, alla ricerca di percorsi e all’ottimizzazione, ed è fondamentale per comprendere varie strutture e concetti matematici come alberi, cicli e grafi planari.

In questo articolo, ti insegneremo ciò che ti serve per iniziare con la teoria dei grafi.  

Creato dall’autore con Midjourney

Che cos’è la teoria dei grafi?

La teoria dei grafi è un ramo della matematica che studia le proprietà e le applicazioni dei grafi. Un grafo definisce una raccolta di oggetti chiamati vertici (o nodi) collegati da archi (o link). 

L’obiettivo principale della teoria dei grafi è comprendere la struttura di questi grafi ed esplorare vari problemi legati alla connettività, alla ricerca di percorsi e all’ottimizzazione di rete.

Analizzando queste relazioni, la teoria dei grafi ci permette di ottenere insight su numerosi problemi del mondo reale in vari ambiti.

Da dove nasce la teoria dei grafi?

Le origini della teoria dei grafi risalgono al XVIII secolo con il lavoro del matematico svizzero Leonhard Euler. La soluzione di Euler al problema dei ponti di Königsberg nel 1736 è considerata uno dei primi problemi di teoria dei grafi. Il problema consisteva nel trovare un percorso a piedi attraverso la città di Königsberg che attraversasse ciascuno dei suoi sette ponti esattamente una volta. L’approccio di Euler pose le basi di ciò che in seguito sarebbe diventato uno studio formale dei grafi.

Nel XIX e XX secolo, la teoria dei grafi si sviluppò significativamente grazie ai contributi di matematici come Carl Friedrich Gauss, che esplorò le proprietà dei poliedri, e di ricercatori successivi che formalizzarono concetti e svilupparono algoritmi per problemi legati ai grafi. 

L’avvento dell’informatica a metà del XX secolo accelerò ulteriormente la crescita della teoria dei grafi, portando alla sua ampia applicazione negli algoritmi, nell’analisi delle reti e nelle strutture dati.

Concetti fondamentali della teoria dei grafi

Capire i fondamenti della teoria dei grafi fornisce la base per esplorare argomenti più avanzati nel campo. Per iniziare, mettiamo quindi alcune fondamenta… 

Grafi come coppie ordinate

Un grafo è definito formalmente come una coppia ordinata G = (V, E), dove:

  • V è un insieme di vertici (o nodi), che rappresentano le singole entità nel grafo.
  • E è un insieme di archi (o collegamenti), che rappresentano le connessioni tra coppie di vertici.

Vertici (V) e archi (E)

  • Vertici (V): sono le unità o i punti fondamentali di un grafo. Ogni vertice rappresenta un’entità o una posizione nella struttura modellata.
  • Archi (E): sono le connessioni o relazioni tra coppie di vertici. Ogni arco collega due vertici, indicando una relazione o un percorso tra di essi.

Tipi di archi

  • Archi orientati: in un grafo orientato (o digrafo), gli archi hanno una direzione, cioè vanno da un vertice a un altro vertice specifico. Questa direzione è spesso rappresentata con una freccia. Gli archi orientati sono utili per modellare relazioni asimmetriche, come il flusso del traffico o i vincoli di precedenza nella pianificazione.
  • Archi non orientati: in un grafo non orientato, gli archi non hanno direzione e si limitano a collegare due vertici. Questo tipo di grafo è usato per rappresentare relazioni simmetriche, come amicizie reciproche o connessioni in una rete in cui la direzione non è significativa.

Terminologia e concetti di base della teoria dei grafi

Ora definiamo alcuni termini e concetti di base: 

Vertice (Nodo)

Questo concetto rappresenta un’entità o un punto all’interno della struttura del grafo. Per esempio, in un grafo di social network, ogni persona può essere rappresentata come un vertice.

Grado di un vertice

Il grado di un vertice è il numero di archi a esso collegati. Questo fornisce indicazioni sulla sua connettività e importanza all’interno di un grafo. Il modo migliore per concettualizzarlo è immaginare una persona, rappresentata come vertice, in un social network. Se dal vertice partono molti archi, diremmo che ha un “alto grado”, che indica anche una persona molto influente. Se stessimo modellando una rete di trasporto, un nodo ad alto grado segnalerebbe che il nodo è un hub centrale nella rete, collegato direttamente al maggior numero di altre località.   

Cammino

Un cammino in un grafo è una sequenza di vertici in cui ogni coppia adiacente è connessa da un arco. I cammini possono essere semplici (senza vertici ripetuti) o generali (con ripetizioni). Per esempio, in un grafo con vertici A, B, C e D, un cammino potrebbe essere A → B → C → D, dove ogni vertice è collegato al successivo da un arco.

Ciclo

Un ciclo è un cammino che inizia e termina nello stesso vertice, senza altre ripetizioni di vertici o archi. I cicli possono essere semplici (nessun arco o vertice ripetuto tranne inizio e fine) o generali. Ecco un esempio: in un grafo con vertici A, B, C e D, un ciclo semplice potrebbe essere A → B → C → D → A.

Grafi connessi

Un grafo è connesso se esiste un cammino tra ogni coppia di vertici. In altre parole, ogni vertice in un grafo connesso può raggiungere ogni altro vertice attraverso qualche sequenza di archi. Un buon esempio è un grafo di social network in cui chiunque è raggiungibile da chiunque altro.

Tipi di grafi

La teoria dei grafi comprende vari tipi di grafi, ciascuno adatto a diverse applicazioni e analisi. In questa sezione, esploreremo questi tipi, discuteremo le loro strutture di base e forniremo esempi di applicazioni. Questo ti aiuterà a capire quando usare ciascun tipo per risolvere problemi specifici e modellare con precisione scenari reali.

Grafo semplice

Visualizzazione di un grafo semplice Fonte: Wikipedia

Un grafo semplice è un tipo di grafo che non presenta archi multipli (più di un arco tra una coppia di vertici) o cappi (archi che collegano un vertice a se stesso). Ogni arco in un grafo semplice collega due vertici distinti.

Esempi:

  • Un social network di base in cui ogni amicizia è rappresentata da un singolo collegamento tra due persone.
  • Una mappa di città collegate da strade uniche e dirette, senza percorsi multipli o autocollegamenti.

Multigrafi

Una visualizzazione di un multigrafo con archi multipli in rosso e diversi cappi in blu Fonte: Wikipedia

Un multigrafo consente archi multipli (archi paralleli) tra la stessa coppia di vertici e può includere anche cappi. Questo tipo di grafo può rappresentare situazioni in cui esistono più interazioni o connessioni tra entità.

Esempi:

  • Una rete di trasporto in cui più compagnie aeree operano voli tra le stesse città.
  • Una rete di comunicazione con più canali che collegano la stessa coppia di nodi di comunicazione.

Grafi pesati

Una visualizzazione di un grafo pesato Fonte: Hyperskill

In un grafo pesato, a ciascun arco è associato un peso o costo, che rappresenta una misura quantitativa come distanza, tempo o capacità. I grafi pesati sono usati per modellare problemi in cui gli archi hanno intensità o costi diversi.

Applicazioni:

  • In una mappa di città collegate da strade, i pesi potrebbero rappresentare le distanze o i tempi di viaggio tra le città.
  • In un problema di ottimizzazione di rete, i pesi potrebbero rappresentare la larghezza di banda o il costo dei collegamenti di comunicazione.

Grafi orientati (digrafi)

Visualizzazione di un grafo orientato Fonte: Wikipedia

Un grafo orientato, o digrafo, ha archi con una direzione specifica, il che significa che ogni arco va da un vertice a un altro vertice distinto. La direzione è spesso rappresentata da una freccia, che indica il flusso o la relazione unidirezionale.

Casi d’uso:

  • Un diagramma di workflow in cui i compiti devono essere completati in un ordine specifico.
  • La struttura di collegamento di pagine web, in cui gli hyperlink puntano da una pagina a un’altra, rappresentando una connessione a senso unico.

Grafi non orientati

Una visualizzazione di un grafo non orientato Fonte: Baeldung

In un grafo non orientato, gli archi non hanno direzione. Un arco collega semplicemente due vertici e la relazione è reciproca o bidirezionale. L’ordine dei vertici in un arco non ha importanza.

Esempi:

  • Una rete di amici in cui l’amicizia è reciproca e le connessioni sono bidirezionali.
  • Una mappa stradale non orientata in cui le strade collegano le città in entrambe le direzioni senza specificare un senso.

Teoria degli alberi

Un albero è un tipo di grafo connesso e aciclico, cioè non contiene cicli. Un albero con $$n$$ vertici ha esattamente $$n−1$$ archi. Ogni coppia di vertici in un albero è collegata da un unico cammino, il che garantisce che ci sia un percorso unico tra due vertici qualsiasi.

Ecco un rapido riepilogo delle proprietà di un grafo albero: 

  • Connesso. Esiste un cammino tra ogni coppia di vertici.
  • Aciclico. Non ci sono cicli, il che garantisce l’assenza di anelli chiusi.
  • Cammino unico. Esiste esattamente un cammino tra due vertici qualsiasi, il che implica che il grafo è minimamente connesso.
  • Numero di archi. Un albero con $$n$$ vertici ha $$n−1$$ archi.
  • Sottoalbero: qualsiasi sottoinsieme di un albero, incluso un singolo vertice, è a sua volta un albero, noto come sottoalbero.
  • Nodi foglia. I vertici con esattamente un arco sono chiamati foglie o nodi foglia. Sono i punti terminali dell’albero.

In cosa gli alberi differiscono dagli altri grafi? 

A differenza dei grafi generali, gli alberi non contengono cicli. Questo significa che qualsiasi grafo con cicli non può essere classificato come albero. 

Un albero con $$n$$ vertici ha esattamente $$n−1$$ archi, mentre i grafi generali possono avere un numero variabile di archi, inclusi archi multipli e autocollegamenti. Un’altra differenza è che gli alberi sono sempre connessi, mentre i grafi generali possono essere sconnessi, costituiti da più componenti che potrebbero essere ciascuna un albero. 

Inoltre, in un albero esiste esattamente un cammino tra due vertici qualsiasi, a differenza di altri grafi in cui possono esistere più cammini tra vertici, in particolare nei grafi che contengono cicli o archi multipli.

Applicazioni

Gli alberi sono fondamentali sia negli aspetti teorici sia in quelli pratici dell’informatica e dell’organizzazione dei dati. Offrono soluzioni estremamente efficienti per molti problemi strutturali e algoritmici. Per esempio: 

Strutture dati

  • Alberi binari: usati in informatica per organizzare i dati gerarchicamente. Esempi includono gli alberi di ricerca binari, che facilitano un rapido recupero e ordinamento dei dati.
  • Heap: un tipo di albero binario usato nelle code di priorità per gestire e recuperare in modo efficiente l’elemento massimo o minimo.
  • B-Tree: usati in database e file system per un recupero e un’archiviazione efficienti dei dati, supportando operazioni come inserimenti, eliminazioni e ricerche.

Progettazione di reti

  • Instradamento: gli alberi sono utilizzati nei protocolli di routing di rete (come gli alberi di copertura, spanning tree) per determinare il percorso più efficiente per la trasmissione dei dati attraverso una rete.
  • Broadcasting: nella progettazione di reti, le strutture ad albero aiutano in un broadcasting efficiente dei dati, garantendo che le informazioni vengano diffuse a tutti i nodi con ridondanza minima.

Rappresentazione di gerarchie

  • File system: i file system usano spesso strutture ad albero per rappresentare directory e sottodirectory, riflettendo l’organizzazione gerarchica dei file.
  • Organigrammi: gli alberi sono usati per modellare gerarchie organizzative, mostrando le strutture di riporto e le relazioni tra i diversi ruoli.

Parsing e analisi sintattica

  • Alberi di sintassi astratta (AST): usati in compilatori e interpreti per rappresentare la struttura sintattica del codice sorgente. Gli AST facilitano il controllo della sintassi e l’ottimizzazione del codice.

Applicazioni della teoria dei grafi

La teoria dei grafi ha applicazioni molto ampie in vari campi. Svolge un ruolo chiave nella risoluzione di problemi complessi e nell’ottimizzazione dei sistemi. Esempi se ne vedono nelle seguenti applicazioni: 

Informatica: networking, algoritmi e strutture dati

La teoria dei grafi è fondamentale per progettare e analizzare sistemi di rete, sviluppare algoritmi e strutturare i dati in informatica. Per esempio, il networking si basa fortemente sulla teoria dei grafi per modellare e gestire le connessioni tra dispositivi. In particolare, le topologie di rete sono rappresentate come grafi per ottimizzare la trasmissione dei dati e l’instradamento. 

Algoritmi come Dijkstra e Kruskal sono impiegati rispettivamente per risolvere problemi di cammino minimo e di albero di copertura minimo. Inoltre, la teoria dei grafi è alla base di strutture dati come liste di adiacenza e matrici, essenziali per una manipolazione e un recupero dei dati efficienti.

Biologia: modellazione di reti biologiche

La teoria dei grafi è anche fondamentale in biologia. È usata per modellare e analizzare complesse reti biologiche, come: 

  • Reti di interazione proteina-proteina
  • Vie metaboliche
  • Reti di regolazione genica

Queste reti sono rappresentate come grafi in cui i vertici denotano entità biologiche (ad esempio proteine, geni) e gli archi rappresentano interazioni o relazioni tra di esse. 

Questo approccio aiuta i ricercatori a comprendere le complesse relazioni all’interno dei sistemi biologici, prevedere risultati funzionali e identificare potenziali target per lo sviluppo di farmaci.

Scienze sociali: analisi delle reti sociali

Nelle scienze sociali, la teoria dei grafi è usata per analizzare le reti sociali, dove gli individui sono rappresentati come vertici e le loro interazioni o relazioni sono raffigurate come archi. 

Questa analisi aiuta a comprendere le strutture sociali, i pattern di influenza e le dinamiche di comunità. Applicando concetti come centralità e connettività, i ricercatori possono identificare influencer chiave, studiare la diffusione delle informazioni e analizzare i comportamenti sociali.

Trasporti: flusso del traffico e pianificazione urbana 

Molti non lo sanno, ma strade, incroci e linee di transito sono modellati come grafi per: 

  • Ottimizzare il flusso del traffico
  • Ridurre la congestione
  • Migliorare la pianificazione dei percorsi. 

Gli algoritmi basati su grafi aiutano a progettare reti di trasporto efficienti, gestire i sistemi di trasporto pubblico e pianificare le infrastrutture urbane. L’analisi di queste reti aiuta i pianificatori a prendere decisioni informate per migliorare la mobilità e la connettività nelle città.

Guida passo passo alla costruzione e analisi di un grafo semplice

Hai appreso le basi e capisci le applicazioni della teoria dei grafi. 

Ora sei pronto per creare e analizzare un tuo grafo semplice. Per semplicità, abbiamo diviso questa guida passo passo in due parti: 

  • Costruzione 
  • Analisi

La parte più logica da cui partire è la costruzione: vediamola… 

Costruire un grafo semplice

Passaggio 1: Definisci il problema. 

Supponiamo di voler modellare una piccola rete di amici in un social network. 

Possiamo usare la libreria NetworkX in Python, creata per l’analisi di reti, per modellarla. 

Iniziamo creando un grafo: 

# Import libraries 
import networkx as nx # Network analysis
import matplotlib.pyplot as plt # Data visualization
import pydot # Python interface to Graphviz
from networkx.drawing.nx_pydot import graphviz_layout
# Create a graph
graph = nx.Graph() 

Passaggio 2: Identifica i vertici. 

Nel nostro social network fittizio, abbiamo quattro persone: Alice, Bob, Carol e Dave. Queste persone saranno rappresentate come vertici nel nostro grafo: ricorda, rappresentano un’entità o una posizione nella struttura modellata.

Ecco come creeremmo i vertici in Python:

# Add the nodes 
# graph.add_node("Alice") --> Add one node per time
graph.add_nodes_from([
    "Alice","Bob", "Carol", "Dave"
]) # Add multiple nodes

Passaggio 3: Determina gli archi. 

Supponiamo che le connessioni di amicizia siano le seguenti:

  • Alice è amica di Bob e Carol.
  • Bob è amico di Alice e Dave.
  • Carol è amica di Alice.
  • Dave è amico di Bob.

Questo significa che queste relazioni formano gli archi:

  • Alice-Bob
  • Alice-Carol
  • Bob-Dave

Ecco come definiremmo gli archi in Python: 

# Add the edges
# graph.add_edge("Alice", "Bob") --> Add one edge per time
graph.add_edges_from([("Alice", "Bob"), 
                      ("Alice", "Carol"),
                      ("Bob", "Dave"),
                      ("Bob", "Alice")  # Ensuring all described edges are included
                     ]) # Add multiple edges

Passaggio 4: Disegna il grafo.

Una volta definiti vertici e archi, possiamo disegnare il grafo per visualizzare le relazioni. Il frammento di codice seguente creerà una rappresentazione grafica della rete con vertici e archi etichettati:

# Visualize the plot
pos = graphviz_layout(graph, prog="dot")
nx.draw(graph, 
        pos, 
        with_labels=True, 
        node_size=1000, 
        node_color=["pink", "yellow", "tan", "orange"])
plt.show()

Output: questo genererà un grafo che mostra le connessioni tra Alice, Bob, Carol e Dave come descritto.

Questo codice produce il seguente grafo: 

Un grafo semplice che modella un social network [creato dall’autore]

Se vuoi modellare il tuo social network, fai una copia di questo DataLab Notebook e apporta le modifiche necessarie. 

Analizzare il grafo semplice

Passaggio 1: Verifica la connettività. 

Poiché possiamo attraversare da qualsiasi vertice a qualsiasi altro vertice attraverso una sequenza di archi, il grafo è connesso. 

Per concettualizzarlo meglio, ecco il cammino tra ogni coppia di vertici: 

  • Alice verso Bob: arco diretto.
  • Alice verso Carol: arco diretto.
  • Alice verso Dave: tramite Bob.
  • Bob verso Carol: tramite Alice.
  • Bob verso Dave: arco diretto.
  • Carol verso Dave: tramite Alice e Bob.

Passaggio 2: Determina il grado di ciascun vertice. 

Ricorda, abbiamo definito il grado di un vertice come “il numero di archi a esso collegati.” Applicando questa conoscenza al nostro esempio, troveremo: 

  • Alice = grado 2 (collegata a Bob e Carol)
  • Bob = grado 2 (collegato ad Alice e Dave)
  • Carol = grado 1 (collegata ad Alice)
  • Dave = grado 1 (collegato a Bob)

Ogni grado è determinato contando il numero di archi associati a ciascun vertice, in base alle amicizie fornite.

Passaggio 3: Identifica cammini e cicli.

Un cammino tra Alice e Dave potrebbe essere Alice → Bob → Dave.

Il grafo non ha cicli, poiché non ci sono percorsi che tornino al vertice di partenza senza ripercorrere i passi.

Passaggio 4: Trova la centralità.

Alice e Bob sono centrali in questa rete, poiché ciascuno si collega a tre altri vertici. Carol e Dave sono meno centrali, collegandosi ciascuno a un solo altro vertice.

Conclusione

La teoria dei grafi offre un solido quadro per esaminare e risolvere relazioni e strutture complesse riscontrabili in vari campi. Comprendendo concetti chiave come vertici, archi e diversi tipi di grafi ed esplorandone le applicazioni pratiche, puoi ottenere insight preziosi per ottimizzare i sistemi e risolvere problemi reali.

Man mano che continui a esplorare la teoria dei grafi, ricorda che i suoi principi non sono solo teorici: sono essenziali per affrontare sfide reali, migliorare la connettività e aumentare l’efficienza dei sistemi. Una solida comprensione della teoria dei grafi migliorerà le tue capacità di problem solving e offrirà una prospettiva più profonda sui sistemi interconnessi che ci circondano.

Per approfondire la tua comprensione della teoria dei grafi, dai un’occhiata a queste risorse più avanzate che ampliano quanto trattato in questo articolo: 

Domande frequenti sulla teoria dei grafi

Perché la teoria dei grafi è importante?

La teoria dei grafi fornisce un quadro fondamentale per analizzare e ottimizzare reti complesse e aiuta a risolvere problemi pratici legati a connettività, ricerca di percorsi ed efficienza dei sistemi.

Quali sono alcune applicazioni della teoria dei grafi?

Le applicazioni includono: ottimizzazione dei percorsi di rete, analisi delle reti sociali, modellazione di sistemi biologici, miglioramento della pianificazione dei trasporti, ecc.

Come posso iniziare con la teoria dei grafi?

Familiarizzati con i concetti fondamentali come vertici e archi, quindi esplora i tipi di grafi di base e le loro proprietà. Inizia con esempi semplici per costruire una solida base per argomenti e applicazioni più complessi.

Qual è lo scopo della teoria dei grafi?

Lo scopo della teoria dei grafi è studiare le relazioni tra oggetti rappresentati come vertici collegati da archi, consentendo l’analisi e l’ottimizzazione di reti e strutture complesse in vari campi.


Kurtis Pykes 's photo
Author
Kurtis Pykes
LinkedIn
Argomenti
Data Visualization

I migliori corsi DataCamp

Programma

Fondamenti di dati in Python

28 ore
Accresci le tue competenze sui dati, scopri come manipolarli e visualizzarli e applica analisi avanzate per prendere decisioni basate sui dati.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro