Algoritmi e Strutture Dati

annuncio pubblicitario
Algoritmi e Strutture Dati
Grafi e visite di grafi
Luigi Laura
Algoritmi e strutture dati
Luigi Laura
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 di persone che si sono strette la mano}
Esempio 2: V={persone che vivono in Italia}, E=
{(x,y) tale che x ha inviato una mail a y}
2
da Demetrescu et al. McGraw Hill 2004
1
Algoritmi e strutture dati
Luigi Laura
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
L ed I sono adiacenti
(L,I) è incidente a L
I ha grado 4: δ(I)=4
3
Algoritmi e strutture dati
∑ δ(v)=2m
v∈V
da Demetrescu et al. McGraw Hill 2004
Luigi Laura
Terminologia (2/2)
< L , I , E, C, B, A > è un cammino nel
grafo di lunghezza 5
Non è il più corto cammino tra L ed A
La lunghezza del più corto cammino
tra due vertici si dice distanza: L ed
A hanno distanza 4
4
da Demetrescu et al. McGraw Hill 2004
2
Algoritmi e strutture dati
Luigi Laura
Visite di grafi
da Demetrescu et al. McGraw Hill 2004
5
Algoritmi e strutture dati
Luigi Laura
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
•  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)
6
da Demetrescu et al. McGraw Hill 2004
3
Algoritmi e strutture dati
Luigi Laura
Algoritmo di visita generica
da Demetrescu et al. McGraw Hill 2004
7
Algoritmi e strutture dati
Luigi Laura
Osservazioni
•  Un vertice viene marcato quando viene incontrato
per la prima volta: la marcatura può essere
mantenuta tramite un vettore di bit di marcatura
•  La visita genera un albero di copertura T del grafo
•  L’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
8
da Demetrescu et al. McGraw Hill 2004
4
Algoritmi e strutture dati
Luigi Laura
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)
9
da Demetrescu et al. McGraw Hill 2004
Algoritmi e strutture dati
Luigi Laura
Visita in ampiezza
10
da Demetrescu et al. McGraw Hill 2004
5
Algoritmi e strutture dati
Luigi Laura
Visita in ampiezza
da Demetrescu et al. McGraw Hill 2004
11
Algoritmi e strutture dati
Luigi Laura
Esempio: grafo non orientato (1/2)
12
da Demetrescu et al. McGraw Hill 2004
6
Algoritmi e strutture dati
Luigi Laura
Esempio: grafo non orientato (2/2)
13
Algoritmi e strutture dati
da Demetrescu et al. McGraw Hill 2004
Luigi Laura
Esempio: grafo orientato
14
da Demetrescu et al. McGraw Hill 2004
7
Algoritmi e strutture dati
Luigi Laura
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
15
da Demetrescu et al. McGraw Hill 2004
Algoritmi e strutture dati
Luigi Laura
Visita in profondità
16
da Demetrescu et al. McGraw Hill 2004
8
Algoritmi e strutture dati
Luigi Laura
Visita in profondità
da Demetrescu et al. McGraw Hill 2004
17
Algoritmi e strutture dati
Luigi Laura
Esempio: grafo non orientato (1/2)
18
da Demetrescu et al. McGraw Hill 2004
9
Algoritmi e strutture dati
Luigi Laura
Esempio: grafo non orientato (2/2)
19
Algoritmi e strutture dati
da Demetrescu et al. McGraw Hill 2004
Luigi Laura
Esempio: grafo orientato (1/2)
20
da Demetrescu et al. McGraw Hill 2004
10
Algoritmi e strutture dati
Luigi Laura
Esempio: grafo orientato (2/2)
21
da Demetrescu et al. McGraw Hill 2004
11
Scarica