Esercizio 21visita BFS e spanning forest
In questa pagina 3
Testo.
Parte A (scritto del 24/06/2026, parte 1, esercizio 3, 4 punti). Si consideri il seguente grafo non orientato rappresentato tramite liste di adiacenza:
| Vertice | Vicini |
|---|---|
| A | B, C, D |
| B | A, E, F |
| C | A, G |
| D | A, H |
| E | B |
| F | B, I |
| G | C |
| H | D, I |
| I | F, H |
Assumendo che i vicini di ogni nodo vengano esaminati nell'ordine in cui compaiono nelle liste di adiacenza, indicare l'ordine in cui vengono visitati i nodi eseguendo una visita BFS a partire dal nodo .
Parte B (esempio di tema d'esame, parte 1, esercizio 3, 4 punti). Si consideri un grafo . (a) Dare la definizione di spanning forest di . (b) Si supponga che abbia componenti connesse . Detti il numero di vertici e il numero di archi di , siano: , ; , ; , . Qual è il numero massimo di archi in una spanning forest di ? Motivare la risposta.
Parte A
Si applica la BFS (vedi Visite di grafi - BFS e DFSVisite in ampiezza (BFS) e in profondità (DFS) come design pattern; etichette discovery, cross e back edge; BFS tree e distanze; complessità Theta(n+m) con liste di adiacenza; applicazioni (connettività, componenti, spanning tree, cammini minimi non pesati, cicli, vertici a distanza al più d); esempio svolto su un grafo di 7 vertici.Visite di grafi - BFS e DFS →): si parte da e si visitano per livelli, esaminando per ogni vertice i vicini nell'ordine della lista.
| Livello | Vertici | Come vengono scoperti |
|---|---|---|
| sorgente | ||
| vicini di , nell'ordine | ||
| da : (già visto), , ; da : , ; da : , | ||
| da : (visto); da : , (nuovo); da : ; da : , (già visto) |
Ordine di visita BFS: .
Il BFS tree (archi discovery) è: (8 archi con , il grafo è connesso); gli archi cross sono (entrambi estremi già visitati quando esamina : era già stato scoperto da ). I livelli coincidono con le distanze da : (cammino ). Per confronto, una DFS dallo stesso vertice con lo stesso ordine delle liste visita (scende in profondità prima di tornare indietro). (Entrambi gli ordini verificati eseguendo il codice.)
Parte B
(a) Definizione. Una spanning forest di è un sottografo di copertura di (contiene tutti i vertici di ) senza cicli (vedi Grafi - definizioni e proprietàGrafo G=(V,E) diretto e non diretto, grafo semplice e pesato; incidenza, adiacenza, grado; cammini, cicli, sottografi, grafi connessi e componenti connesse; alberi liberi, foreste, spanning tree e spanning forest; proprietà con dimostrazioni (somma dei gradi = 2m, m <= n(n-1)/2, alberi m = n-1, connessi m >= n-1, foreste m <= n-1).Grafi - definizioni e proprietà →): una foresta di alberi liberi disgiunti, uno per ciascuna componente connessa (se è massimale).
(b) Massimo numero di archi. Una spanning forest ha al più un albero per ciascuna componente connessa. Un albero su vertici ha archi (vedi la proprietà per gli alberi), e per ciascuna componente connessa esiste uno spanning tree. Quindi il massimo numero di archi è
con vertici e componenti. I valori sono ridondanti: servono solo a controllare che le componenti siano possibili (: , , ) e connesse (). Più di archi creerebbe un ciclo (in una foresta ).
Errori comuni
- Visitare i vicini in ordine alfabetico invece che nell'ordine delle liste: qui coincidono, ma in generale conta la lista.
- Confondere BFS e DFS: la BFS esaurisce un livello prima del successivo ( prima di ).
- Rispondere nel punto B: vale solo per grafi connessi; con componenti è .
- Rispondere o contare tutti gli archi: una spanning forest non può contenere cicli.
Versione ripasso
Testo. (A) BFS da sul grafo con liste ; ; ; ; ; ; ; ; . (B) definizione di spanning forest; con componenti (; ): massimo numero di archi di una spanning forest.
- A (vedi Visite di grafi - BFS e DFSVisite in ampiezza (BFS) e in profondità (DFS) come design pattern; etichette discovery, cross e back edge; BFS tree e distanze; complessità Theta(n+m) con liste di adiacenza; applicazioni (connettività, componenti, spanning tree, cammini minimi non pesati, cicli, vertici a distanza al più d); esempio svolto su un grafo di 7 vertici.Visite di grafi - BFS e DFS →): livelli , , , ; ordine ; discovery ; cross .
- B(a) (vedi Grafi - definizioni e proprietàGrafo G=(V,E) diretto e non diretto, grafo semplice e pesato; incidenza, adiacenza, grado; cammini, cicli, sottografi, grafi connessi e componenti connesse; alberi liberi, foreste, spanning tree e spanning forest; proprietà con dimostrazioni (somma dei gradi = 2m, m <= n(n-1)/2, alberi m = n-1, connessi m >= n-1, foreste m <= n-1).Grafi - definizioni e proprietà →): sottografo di copertura senza cicli, un albero per componente.
- B(b): (, ); i sono ridondanti.
- BFS tree: ; cross ; DFS con lo stesso ordine delle liste: . Una spanning forest con componenti ha archi.
- Errori: ordine dei vicini ignorato; BFS e DFS scambiate; per grafi non connessi; cicli ammessi.