Algoritmi e Strutture Dati
Capitolo 11
Grafi e visite di grafi
Camil Demetrescu, Irene Finocchi,
Giuseppe F. Italiano
Algoritmi e strutture dati
2
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, 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 o
spigoli: ogni arco connette due vertici
Esempio 1: V={persone che vivono in Italia},
E={coppie {x,y} tali che x e y si sono stretta la mano}
Esempio 2: V={persone che vivono in Italia},
E={coppie (x,y) tale che x ha inviato una mail a y}
3
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, 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 spigoli
∑ d(v)=2m
L ed I sono adiacenti
vV
(L,I) è incidente ad L e ad I
I ha grado 4: d(I)=4
4
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Terminologia (2/2)
< L , I , E, C, B, A > è un cammino nel
grafo (non orientato) di lunghezza 5
Se il grafo è orientato, il cammino
deve rispettare il verso di
orientamento degli archi
La lunghezza del più corto cammino
tra due vertici si dice distanza tra i
due vertici: L ed A hanno distanza 4
Se esiste un cammino per ogni coppia
di vertici, allora il grafo si dice
connesso
5
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
6
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Strutture dati
per rappresentare grafi
7
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Grafi non orientati
8
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Grafi orientati
9
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Prestazioni della lista di archi
10
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Prestazioni delle liste di adiacenza
11
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Prestazioni della matrice di adiacenza
12
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Visite di grafi
13
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Scopo e tipi di visita
• Una visita (o attraversamento) di un grafo G
permette di esaminare i nodi e gli archi di G in
modo sistematico (supporremo G connesso)
• Problema di base in molte applicazioni
• Esistono vari tipi di visite con diverse
proprietà: in particolare, visita in ampiezza
(BFS=breadth first search) e visita in
profondità (DFS=depth first search)
14
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Algoritmo di visita generica
• La visita parte da un vertice s prescelto ed esplora
seguendo una qualche regola i suoi adiacenti
• Un vertice v raggiunto da u viene marcato come
visitato se è stato incontrato per la prima volta, e
viene quindi aggiunto alla frangia F di visita;
inoltre, il nodo u diventa padre di v, e l’arco (u,v)
viene etichettato come arco di visita
• Un vertice rimane nella frangia di visita fintantoché
non sono stati esplorati tutti i suoi adiacenti
• La visita genera un albero di copertura T del grafo
\
15
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Visite particolari
• Se la frangia F è implementata come coda si ha
la visita in ampiezza (BFS)
• Se la frangia F è implementata come pila si ha
la visita in profondità (DFS)
16
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Visita in ampiezza
17
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Visita in ampiezza
18
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Costo della visita in ampiezza
Il tempo di esecuzione dipende dalla struttura
dati usata per rappresentare il grafo:
• Lista di archi: O(mn)
• Liste di adiacenza: O(m+n)
• Matrice di adiacenza: O(n2)
19
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Esempio: grafo non orientato (1/2)
20
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Esempio: grafo non orientato (2/2)
21
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Esempio: grafo orientato
22
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Proprietà
• Per ogni nodo v, il livello di v nell’albero BFS
è pari alla distanza di v dalla sorgente s
• Per ogni arco (u,v) di un grafo non orientato,
gli estremi u e v appartengono allo stesso
livello o a livelli consecutivi dell’albero BFS
• Se il grafo è orientato, possono esistere archi
(u,v) che attraversano all’indietro più di un
livello
23
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Visita in profondità
24
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Visita in profondità
25
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Costo della visita in profondità
Il tempo di esecuzione dipende dalla struttura
dati usata per rappresentare il grafo:
• Lista di archi: O(mn)
• Liste di adiacenza: O(m+n)
• Matrice di adiacenza: O(n2)
26
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Esempio: grafo non orientato (1/2)
27
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Esempio: grafo non orientato (2/2)
28
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Esempio: grafo orientato (1/2)
29
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Esempio: grafo orientato (2/2)
30
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Proprietà
• Sia (u,v) un arco di un grafo non orientato. Allora:
– (u,v) è un arco dell’albero DFS, oppure
– i nodi u e v sono l’uno discendente/antenato dell’altro
• Sia (u,v) un arco di un grafo orientato. Allora:
– (u,v) è un arco dell’albero DFS, oppure
– i nodi u e v sono l’uno discendente/antenato dell’altro,
oppure
– (u,v) è un arco trasversale a sinistra, ovvero il vertice
v è in un sottoalbero visitato precedentemente ad u
31
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Riepilogo
• Concetto di grafo e terminologia
• Diverse strutture dati per rappresentare grafi nella
memoria di un calcolatore
• L’utilizzo di una particolare rappresentazione può
avere un impatto notevole sui tempi di esecuzione
di un algoritmo su grafi (ad esempio, nella visita
di un grafo)
• Algoritmo di visita generica e due casi particolari:
visita in ampiezza e visita in profondità
32
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
33
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Copyright © 2004 - The McGraw - Hill Companies, srl
Algoritmi e strutture dati
34
Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano
Copyright © 2004 - The McGraw - Hill Companies, srl