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.

Traccia completa (si esaminano i vertici nell'ordine di scoperta; ogni arco compare due volte, una per estremo, ma è etichettato la prima volta):

vertice esaminato vicini nella lista scoperti (discovery) già visti
AA B,C,DB,C,D B,C,DB,C,D
BB A,E,FA,E,F E,FE,F AA
CC A,GA,G GG AA
DD A,HA,H HH AA
EE BB BB
FF B,IB,I II BB
GG CC CC
HH D,ID,I DD; II già scoperto da FF: arco HIHI è cross
II F,HF,H FF, HH (archi già etichettati)

Gli archi del grafo sono 99 (somma delle lunghezze delle liste =18=2m=18=2m), 88 nell'albero e 11 cross.

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 (5+6+8=195+6+8=19). Perché ni−1n_i-1 per componente: uno spanning tree di un grafo connesso con nin_i vertici è un albero libero, che ha ni−1n_i-1 archi (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à →, proprietà P3). 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≤(82)=288 \le \binom82=28; Fattoriale e coefficienti binomialiFattoriale, permutazioni, disposizioni, combinazioni e coefficiente binomiale n su k, con il triangolo di Tartaglia.Fattoriale e coefficienti binomiali →) 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