Salta al contenuto
Note per Studenti Esercizio 21 · visita BFS e spanning forest

Esercizio 21visita BFS e spanning forest

Esame
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 G=(V,E)G = (V, E) 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 s=As = A.

Parte B (esempio di tema d'esame, parte 1, esercizio 3, 4 punti). Si consideri un grafo G=(V,E)G = (V, E). (a) Dare la definizione di spanning forest di GG. (b) Si supponga che GG abbia 33 componenti connesse G1,G2,G3G_1, G_2, G_3. Detti nin_i il numero di vertici e mim_i il numero di archi di GiG_i, siano: n1=5n_1 = 5, m1=10m_1 = 10; n2=6n_2 = 6, m2=15m_2 = 15; n3=8n_3 = 8, m3=8m_3 = 8. Qual è il numero massimo di archi in una spanning forest di GG? 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 AA e si visitano per livelli, esaminando per ogni vertice i vicini nell'ordine della lista.

Livello Vertici Come vengono scoperti
L0L_0 AA sorgente
L1L_1 B,C,DB, C, D vicini di AA, nell'ordine B,C,DB, C, D
L2L_2 E,F,G,HE, F, G, H da BB: AA (già visto), EE, FF; da CC: AA, GG; da DD: AA, HH
L3L_3 II da EE: BB (visto); da FF: BB, II (nuovo); da GG: CC; da HH: DD, II (già visto)

Ordine di visita BFS: A,B,C,D,E,F,G,H,IA, B, C, D, E, F, G, H, I.

Il BFS tree (archi discovery) è: AB,AC,AD,BE,BF,CG,DH,FIAB, AC, AD, BE, BF, CG, DH, FI (8 archi =n−1= n - 1 con n=9n = 9, il grafo è connesso); gli archi cross sono HIHI (entrambi estremi già visitati quando HH esamina II: II era già stato scoperto da FF). I livelli coincidono con le distanze da AA: d(A,I)=3d(A, I) = 3 (cammino A,B,F,IA, B, F, I). Per confronto, una DFS dallo stesso vertice con lo stesso ordine delle liste visita A,B,E,F,I,H,D,C,GA, B, E, F, I, H, D, C, G (scende in profondità prima di tornare indietro). (Entrambi gli ordini verificati eseguendo il codice.)

Parte B

(a) Definizione. Una spanning forest di GG è un sottografo di copertura di GG (contiene tutti i vertici di VV) 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 nin_i vertici ha ni−1n_i - 1 archi (vedi la proprietà m=n−1m = n - 1 per gli alberi), e per ciascuna componente connessa esiste uno spanning tree. Quindi il massimo numero di archi è

∑i=13(ni−1)=(5−1)+(6−1)+(8−1)=4+5+7=16=n−k,\sum_{i=1}^{3} (n_i - 1) = (5 - 1) + (6 - 1) + (8 - 1) = 4 + 5 + 7 = \mathbf{16} = n - k,

con n=19n = 19 vertici e k=3k = 3 componenti. I valori mim_i sono ridondanti: servono solo a controllare che le componenti siano possibili (mi≤(ni2)m_i \le \binom{n_i}{2}: 10=(52)10 = \binom52, 15=(62)15 = \binom62, 8≤288 \le 28) e connesse (mi≥ni−1m_i \ge n_i - 1). Più di n−kn - k archi creerebbe un ciclo (in una foresta m≤n−km \le n - k).

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 (B,C,DB, C, D prima di EE).
  • Rispondere n−1=18n - 1 = 18 nel punto B: vale solo per grafi connessi; con 33 componenti è n−3n - 3.
  • Rispondere m1+m2+m3m_1 + m_2 + m_3 o contare tutti gli archi: una spanning forest non può contenere cicli.

Versione ripasso

Testo. (A) BFS da AA sul grafo con liste A ⁣: ⁣B,C,DA\!:\!B,C,D; B ⁣: ⁣A,E,FB\!:\!A,E,F; C ⁣: ⁣A,GC\!:\!A,G; D ⁣: ⁣A,HD\!:\!A,H; E ⁣: ⁣BE\!:\!B; F ⁣: ⁣B,IF\!:\!B,I; G ⁣: ⁣CG\!:\!C; H ⁣: ⁣D,IH\!:\!D,I; I ⁣: ⁣F,HI\!:\!F,H. (B) definizione di spanning forest; GG con 33 componenti (ni=5,6,8n_i = 5, 6, 8; mi=10,15,8m_i = 10, 15, 8): massimo numero di archi di una spanning forest.

Teoria collegata