Professional Documents
Culture Documents
Preliminari
Problema:
Dato un grafo G e un vertice s (source), si vogliono
esplorare tutti i vertici di G raggiungibili da s
1
Descrizione dell’algoritmo
Proprietà:
(u,v)∈E, color[u]=nero → color[v] ∈{nero, grigio}
Descrizione dell’algoritmo
2
Pseudo-codice BFS
BFS(G, s)
Esempio BFS
0
Inizializzazione
∞
A B ∞
C
∞ F ∞
E
∞ D
G
∞
Coda
A
3
Esempio BFS 0
∞
A
Nodi adiacenti B ∞
C
Coda
∞ F ∞
E
A
∞ D
G ∞
0
∞
A B ∞
C
Coda
1 F ∞
E
A F
∞ D
G
∞
Esempio BFS 0 1
A B ∞
1 C
Coda F ∞
E
F B
∞ D
G ∞
0
1
A B ∞
Coda 2 C
1 F
B D E E
2 D
G
∞
4
Esempio BFS 0
1
A B 2
Coda 2 C
1 F
D E C E
2 D
G
0 ∞
1
A B 2
Coda 2 C
1 F
E C E
2 D
G
∞
0
Esempio BFS 1
A B 2
Coda 2 C
1 F
C G E
2 D
G 3
0
1
A B 2
Coda 2 C
F
E
2 D
G 3
5
Analisi complessità (liste di adiacenza)
Correttezza di BFS
Teorema.
1. BFS(G,s) scopre tutti i vertici raggiungibili
da s
2. d[u] è la lunghezza del cammino min. da s
3. cammino minimo da s a u =
6
Sottografo predecessore
Gπ è un albero breadth-first se
Vπ contiene i vertici raggiungibili da s,
∀ v ∈ V, vi è un unico cammino da s a v in
Gπ ed è minimo
|Eπ| = |Vπ| -1
Alberi breadth-first
7
Esercizi