Grafi
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
LASD 2 003-04
2
Bibliografia
T.H. Cormen, C.E. Leiserson, R.L. RivestIntroduction to Algorithms, McGrawHill
Capitoli: 5 – solo paragrafo 5.4
23 – tranne paragrafi 23.4 e 23.5 24 – tutto25 – tranne 25.3, 25.4 e 25.527 – tranne 27.4 e 27.5
8Esiste anche la versione italiana edita daJackson Libri
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
LASD 2 003-04
3
Grafi 8I grafi sono una particolare struttura dati
usata spesso in informatica
8Algoritmi che lavorano su grafi sono spesso fondamentali in molti campi dell’informatica (si pensi alla gestione di reti di computer)4Relazioni tra classi nei linguaggi OO4Reti di trasporto4Grafo del Web
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
LASD 2 003-04
4
Grafi
8Per studiare ed analizzare tale struttura dati cominceremo a considerare4Rappresentazione dei grafi
4Algoritmi che “navigano” il grafo nel senso che cercano di ottenere informazioni strutturali sul grafo
•Simili alle visite preorder/inorder/postorder in un albero
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
LASD 2 003-04
5
Grafi
8Un grafo G=(V,E) è una coppia di insiemiV= insieme dei verticiE= insieme dei collegamenti tra i vertici
45
1 2
3
E={(1,2),(2,3),(2,4),(3,4),(4,5),(5,1)
(2,1),(3,2),(4,2),(4,3),(5,4),(1,5)}
grafo non direzionatoEs:
V={1,2,3,4,5}
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
LASD 2 003-04
6
Grafi
V={1,2,3,4,5,6}
E={(1,2),(1,4),(2,5),(3,6),(4,2),(5,3),(5,4),(6,6)}
grafo direzionatoEs:
54
1 2 3
6
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
LASD 2 003-04
7
Ulteriori definizioni – 1
8Pseudografo: 4L’insieme degli archi E contiene anche
coppie (vi, vi) dette cappi
8Percorso in un grafo: 4Insieme di k vertici v1, v2,… .., vk tali che
(vi, vi+1) ∈E e v1 ≠ v2 ≠ v3 … ≠ vk
8Circuito in un grafo: 4Insieme di k vertici v1, v2,… .., vk tali che
(vi, vi+1) ∈E e v1= vk
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
LASD 2 003-04
8
Ulteriori definizioni – 2
8Ciclo in un grafo: 4Insieme di k vertici v1, v2,… .., vk tali che
(vi, vi+1) ∈E e v1 ≠ v2 ≠ v3 … ≠ vk-1 e v1=vk
8G’=(V’,E’) sottografo di G=(V,E) se e solo se4V’ ⊆ V ed E’ ⊆ E.
8grado(v): #di archi incidenti in v8Se (vi, vj) ∈ E, allora
4 vi adiacente a vj
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
LASD 2 003-04
9
Ulteriori definizioni – 3
8Un grafo completo, indicato con Kn è un grafo in cui sono presenti tutti gli archi.4Numero di archi in Kn : n(n-1)/2
8Grafo pesato: 4Grafo in cui ad ogni arco e è associato un
valore reale w
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
LASD 2 003-04
10
Ulteriori esempi
Esempi di grafi: (a-d) grafi; (c) un grafo completo K4; (e) un multigrafo; (f) uno pseudografo; (g) un circuito in un grafo orientato; (h) un ciclo in un grafo orientato
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
LASD 2 003-04
11
Rappresentazione dei grafi
8Un grafo può essere rappresentato in due modi 4Liste di adiacenza
•È il metodo preferito quando il grafo è sparso (pochi archi) e cioè quando |E|<<|V|2
4Matrici di adiacenza•È il metodo preferito quando il grafo è denso
(molti archi)e cioè |E|≈|V|2
•O quando è necessario sapere velocemente se un arco è presente o meno nel grafo
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
LASD 2 003-04
12
Liste di adiacenza
8Consiste di un array Adj con |V| elementi, uno per ogni vertice, tale che4Se u ∈ V è Adj[u] contiene il puntatore
alla lista dei nodi v ∈V tali che (u,v)∈E
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
LASD 2 003-04
13
Liste di adiacenza
45
1 2
3
2 5
1 3 4
2 4
1 4
2 3 5
1
2
3
4
5
8Nel grafo non direzionato4La somma della lunghezza della lista è 2|E|
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
LASD 2 003-04
14
Liste di adiacenza
2
5
6
43
6
2
41
2
3
4
5
654
1 2 3
6
8Nel grafo direzionato4La somma della lunghezza della lista è |E|
8Lo spazio richiesto dalla lista di adiacenza (direzionanto o non) è O(max{V,E})=O(V+E)
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
LASD 2 003-04
15
Liste di adiacenza
8La rappresentazione mediante liste di adiacenza può essere facilmente adattata a rappresentare grafi pesati, cioè grafi tali che a ciascun arco è associato un peso:4w : E à R w(u,v)=peso associato all’arco (u,v)
8Al record associato ad un vertice v della lista del vertice u si può aggiungere un ulteriore campo “peso” che contiene proprio w(u,v)
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
LASD 2 003-04
16
Ulteriore esempio
Rappresentazioni di grafi. Un grafo (a) rappresentato con una lista di adiacenza b) e c).
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
LASD 2 003-04
17
Matrici di adiacenza
8Consiste in una matrice A di dimensioni |V| x |V| tale che 4A[u,v] = 1 se (u,v) ∈ E,
0 altrimenti
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
LASD 2 003-04
18
Matrice di adiacenza
45
1 2
3
1
2
3
4
5
54321
0 1
1
0
0
0
1
0 0 1
1 1 0
0 1 0
1 1
1 0
0 1
0 1 0
1
2
3
4
4321
0 1
0
0
0
0
0
0 1
0 0
0 0
1 0 0
5 0 0 1 1
6 0 0 0 0
5
0
1
0
0
0
0
6
0
0
1
0
0
1
54
1 2 3
6
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
LASD 2 003-04
19
Matrice di adiacenza
8Lo spazio richiesto è O(|V|2) indipendentemente dal numero di archi
8In un grafo non-direzionato (u,v)=(v,u) allora4 A è simmetrica rispetto alla diagonale principale,
A=AT
8Anche nel caso di matrice di adiacenza può essere rappresentato un grafo pesato; basta porre 4A[u,v]=w(u,v) se (u,v) ∈E
nil altrimenti
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com
LASD 2 003-04
20
Può essere implementato
in O(1)
Vantaggi e Svantaggi
8Lista di adiacenza: memoria O(|E|)Vantaggi: permette di scorrere i nodi adiacenti a v in O(grado(v))Svantaggi: inserimenti e cancellazioni su liste concatenate in O(grado(v))
8Matrice di adiacenza: memoria O(|V|2)Vantaggi: Inserimenti e cancellazioni in O(1)Svantaggi: permette di scorrere i nodi adiacenti a v in O(|V|)
PDF created with FinePrint pdfFactory trial version http://www.fineprint.com