Professional Documents
Culture Documents
Capitolo 11
Grafi e visite di grafi
2
Da Demetrescu et al. McGraw Hill 2004
1
Algoritmi e strutture dati Giuseppe F. Italiano
3
Da Demetrescu et al. McGraw Hill 2004
4
Da Demetrescu et al. McGraw Hill 2004
2
Algoritmi e strutture dati Giuseppe F. Italiano
5
Da Demetrescu et al. McGraw Hill 2004
6
Da Demetrescu et al. McGraw Hill 2004
3
Algoritmi e strutture dati Giuseppe F. Italiano
7
Da Demetrescu et al. McGraw Hill 2004
4
Algoritmi e strutture dati Giuseppe F. Italiano
Definizione
Un grafo G = (V,E) consiste in:
- un insieme V di vertici (o nodi)
- un insieme E di coppie di vertici, detti archi:
ogni arco connette due vertici
5
Algoritmi e strutture dati Giuseppe F. Italiano
Terminologia (1/2)
Esempio 1: relazione simmetrica grafo non orientato
Esempio 2: relazione non simmetrica grafo orientato
n = numero di vertici
m = numero di archi
11
Da Demetrescu et al. McGraw Hill 2004
Terminologia (2/2)
12
Da Demetrescu et al. McGraw Hill 2004
6
Algoritmi e strutture dati Giuseppe F. Italiano
Strutture dati
per rappresentare grafi
13
Da Demetrescu et al. McGraw Hill 2004
14
Da Demetrescu et al. McGraw Hill 2004
7
Algoritmi e strutture dati Giuseppe F. Italiano
Grafi orientati
15
Da Demetrescu et al. McGraw Hill 2004
16
Da Demetrescu et al. McGraw Hill 2004
8
Algoritmi e strutture dati Giuseppe F. Italiano
17
Da Demetrescu et al. McGraw Hill 2004
18
Da Demetrescu et al. McGraw Hill 2004
9
Algoritmi e strutture dati Giuseppe F. Italiano
Visite di grafi
19
Da Demetrescu et al. McGraw Hill 2004
20
Da Demetrescu et al. McGraw Hill 2004
10
Algoritmi e strutture dati Giuseppe F. Italiano
Visite di alberi
21
Copyright 2004 - The McGraw - Hill Companies, srl
11
Algoritmi e strutture dati Giuseppe F. Italiano
Come mantenere S?
23
Copyright 2004 - The McGraw - Hill Companies, srl
12
Algoritmi e strutture dati Giuseppe F. Italiano
25
Copyright 2004 - The McGraw - Hill Companies, srl
Come mantenere S?
26
Copyright 2004 - The McGraw - Hill Companies, srl
13
Algoritmi e strutture dati Giuseppe F. Italiano
28
Copyright 2004 - The McGraw - Hill Companies, srl
14
Algoritmi e strutture dati Giuseppe F. Italiano
29
Copyright 2004 - The McGraw - Hill Companies, srl
15
Algoritmi e strutture dati Giuseppe F. Italiano
Osservazioni
Ad ogni istante, la visita (DFS, BFS) partiziona i
nodi dellalbero in tre classi:
nodo chiuso: tutti gli archi incidenti sul nodo sono
stati esaminati
nodo aperto: esistono archi incidenti sul nodo non
ancora esaminati
nodo non ancora visitato
Il tipo di visita (DFS, BFS) determinato
dallordine (i.e., struttura dati) con cui vengono
visitati i nodi aperti: DFS = pila, BFS = coda.
31
Da Demetrescu et al. McGraw Hill 2004
32
Da Demetrescu et al. McGraw Hill 2004
16
Algoritmi e strutture dati Giuseppe F. Italiano
Osservazioni
Un vertice viene marcato quando viene incontrato
per la prima volta: marcatura implementata tramite
un vettore di bit di marcatura
Visita genera un albero di copertura T del grafo
Insieme di vertici F T mantiene la frangia di T:
v (T-F) : v chiuso, tutti gli archi incidenti su v sono
stati esaminati
v F : v aperto, esistono archi incidenti su v non
ancora esaminati
33
Da Demetrescu et al. McGraw Hill 2004
34
Da Demetrescu et al. McGraw Hill 2004
17
Algoritmi e strutture dati Giuseppe F. Italiano
35
Da Demetrescu et al. McGraw Hill 2004
Visita in ampiezza
36
Da Demetrescu et al. McGraw Hill 2004
18
Algoritmi e strutture dati Giuseppe F. Italiano
Visita in ampiezza
37
Da Demetrescu et al. McGraw Hill 2004
38
Da Demetrescu et al. McGraw Hill 2004
19
Algoritmi e strutture dati Giuseppe F. Italiano
39
Da Demetrescu et al. McGraw Hill 2004
40
Da Demetrescu et al. McGraw Hill 2004
20
Algoritmi e strutture dati Giuseppe F. Italiano
Propriet
41
Da Demetrescu et al. McGraw Hill 2004
Visita in profondit
42
Da Demetrescu et al. McGraw Hill 2004
21
Algoritmi e strutture dati Giuseppe F. Italiano
Visita in profondit
43
Da Demetrescu et al. McGraw Hill 2004
44
Da Demetrescu et al. McGraw Hill 2004
22
Algoritmi e strutture dati Giuseppe F. Italiano
45
Da Demetrescu et al. McGraw Hill 2004
46
Da Demetrescu et al. McGraw Hill 2004
23
Algoritmi e strutture dati Giuseppe F. Italiano
47
Da Demetrescu et al. McGraw Hill 2004
Propriet
Sia (u,v) un arco di un grafo non orientato. Allora:
(u,v) un arco dellalbero DFS, oppure
i nodi u e v sono luno discendente/antenato dellaltro
Sia (u,v) un arco di un grafo orientato. Allora:
(u,v) un arco dellalbero DFS, oppure
i nodi u e v sono luno discendente/antenato dellaltro,
oppure
(u,v) un arco trasversale a sinistra, ovvero il vertice
v in un sottoalbero visitato precedentemente ad u
48
Da Demetrescu et al. McGraw Hill 2004
24
Algoritmi e strutture dati Giuseppe F. Italiano
Relazione di equivalenza
Riflessiva:
per ogni v, v v (cammini degeneri da v a v)
Simmetrica:
se u v, allora v u (usa gli stessi due cammini)
Transitiva:
Se u vev w, allora u w
(quattro cammini: u v, v u, v w, w v.
concatenandoli a coppie: u v w, w v u)
25
Algoritmi e strutture dati Giuseppe F. Italiano
51
Da Demetrescu et al. McGraw Hill 2004
52
Da Demetrescu et al. McGraw Hill 2004
26
Algoritmi e strutture dati Giuseppe F. Italiano
53
Da Demetrescu et al. McGraw Hill 2004
27
Algoritmi e strutture dati Giuseppe F. Italiano
28
Algoritmi e strutture dati Giuseppe F. Italiano
57
Da Demetrescu et al. McGraw Hill 2004
58
Da Demetrescu et al. McGraw Hill 2004
29
Algoritmi e strutture dati Giuseppe F. Italiano
60
Da Demetrescu et al. McGraw Hill 2004
30
Algoritmi e strutture dati Giuseppe F. Italiano
61
Da Demetrescu et al. McGraw Hill 2004
62
Da Demetrescu et al. McGraw Hill 2004
31
Algoritmi e strutture dati Giuseppe F. Italiano
63
Da Demetrescu et al. McGraw Hill 2004
64
Da Demetrescu et al. McGraw Hill 2004
32
Algoritmi e strutture dati Giuseppe F. Italiano
65
Da Demetrescu et al. McGraw Hill 2004
arco (d,j) fa
uscire da
sottoalbero di
radice d, e d
testa di [d]
arco (a,e) fa
uscire da
sottoalbero di
radice a, e a non
testa di [a]
(anche se non ci fossero gli archi (a,g) e (a,b)!)
(a,e) chiude un ciclo e (d,j) non chiude nessun ciclo!
66
Da Demetrescu et al. McGraw Hill 2004
33
Algoritmi e strutture dati Giuseppe F. Italiano
34
Algoritmi e strutture dati Giuseppe F. Italiano
70
Da Demetrescu et al. McGraw Hill 2004
35
Algoritmi e strutture dati Giuseppe F. Italiano
71
Da Demetrescu et al. McGraw Hill 2004
DFS(v): numero di
vertici incontrati
prima di v nella
visita DFS.
Facile da calcolare
incrementando un
contatore durante
visita DFS
72
Da Demetrescu et al. McGraw Hill 2004
36
Algoritmi e strutture dati Giuseppe F. Italiano
73
Da Demetrescu et al. McGraw Hill 2004
37
Algoritmi e strutture dati Giuseppe F. Italiano
75
Da Demetrescu et al. McGraw Hill 2004
76
Da Demetrescu et al. McGraw Hill 2004
38
Algoritmi e strutture dati Giuseppe F. Italiano
Calcolo di fuga(v)
Allinizio, fuga(v) = DFS(v)
Per ogni arco (v,w) dellalbero DFS:
fuga(v) = min { fuga(v), fuga(w) }
Per ogni altro arco (v,w):
fuga(v) = min { fuga(v), DFS(w) }
77
Da Demetrescu et al. McGraw Hill 2004
78
Da Demetrescu et al. McGraw Hill 2004
39
Algoritmi e strutture dati Giuseppe F. Italiano
79
Da Demetrescu et al. McGraw Hill 2004
Riepilogo
Nozione di grafo e terminologia
Diverse strutture dati per rappresentare grafi nella
memoria di un calcolatore
Lutilizzo di particolare rappresentazione pu
avere impatto notevole su tempi di esecuzione di
algoritmi su grafi (i.e., nella visita di un grafo)
Algoritmo di visita generica e due casi particolari:
visita in ampiezza e visita in profondit (DFS)
Propriet visita DFS ci hanno guidato nel progetto
di algoritmi efficienti (calcolo CFC)
80
Da Demetrescu et al. McGraw Hill 2004
40