SlideShare uma empresa Scribd logo
1 de 73
Baixar para ler offline
Grafi
Algoritmi e Calcolo Parallelo

Prof. Pier Luca Lanzi
Riferimenti

•

•

2

Bertossi Alan A., Montresor Alberto. “Algoritmi e
strutture di dati” (seconda edizione), CittàStudi 2010

Stanley B. Lippman, Barbara E. Moo, Josee Lajoie
“C++ Primer”, 5th Edition Addison-Wesley

Prof. Pier Luca Lanzi
Cos’è un Grafo?

3

a

v4

v1
b
e1

e

d

e4

e2

c

Prof. Pier Luca Lanzi

v2

e3

v3

v5
Problemi Tipici su Grafi

•
•
•
•
•

4

Visite
Visite in ampiezza (cammini minimi singola sorgente)
Visite in profondità (ordinamento topologico,
componenti fortemente connesse)
Cammini minimi
Da singola sorgente
Fra tutte le coppie di vertici
Alberi di connessione minimi
Problemi di flusso
....






Prof. Pier Luca Lanzi
Grafi Orientati

•

5

Un grafo orientato G è definito dalla coppia (V, E)
V è l’insieme finito dei vertici
E è l’insieme degli archi (relazione binaria in V)




B
C
A
F
D

E

V = {A, B, C, D, E, F}
E = { (A,B), (A,D),(B,C),(D,C),(E,C), (D,E),(D,A) }

Prof. Pier Luca Lanzi
Grafi Non Orientati

•

6

Un grafo non orientato G è definito dalla coppia (V, E)
V è l’insieme finito dei vertici
E è l’insieme degli archi (coppie ordinate di elementi di
V)




B

C

A
F
D

E

V = {A, B, C, D, E, F}
E = { (A,B), (A,D), (B,C), (C,D),(C,E),(D,E) }

Prof. Pier Luca Lanzi
Definizioni: Incidenza e Adiacenza

•
•
•

7

In un grafo orientato
un arco (u,v) si dice incidente da u in v
In un grafo non orientato
la relazione di adiacenza tra vertici è simmetrica
Un vertice v si dice adiacente a u
se e solo se (u, v) ∈ E
(1,2) è incidente da 1 a 2
(1,4) è incidente da 1 a 4
(4,1) è incidente da 4 a 1
2





3
1
6
4

5

Prof. Pier Luca Lanzi

2 è adiacente ad 1
3 è adiacente a 2, 4, 5
1 è adiacente a 4 e viceversa
2 non è adiacente a 3,4
6 non è adiacente ad alcun
vertice
Componenti Fortemente Connesse

•

•

8

Terminologia
Componenti connesse (connected components, CC)
Componenti fortemente connesse
(strongly connected components, SCC)




Motivazioni
Molti algoritmi che operano sui grafi iniziano
decomponendo il grafo nelle sue componenti
L'algoritmo viene poi eseguito su ognuna delle
componenti
I risultati vengono poi ricomposti assieme






Prof. Pier Luca Lanzi
Grafi Connessi e Componenti Connesse

•

9

In un grafo non orientato G
G è connesso ⇔ esiste un cammino da ogni vertice ad ogni altro
vertice
Un grafo G’= (V’, E’) è una componente connessa di G ⇔
è un sottografo di G fortemente connesso e massimale
Definizioni
2
3
G’ è un sottografo di
A
G (G’⊆ G) se e solo se
1
V’⊆V e E’⊆ E
G’ è massimale ⇔ non esiste un
sottografo G” di G che sia
4
5
connesso e “più grande” di
G’, ovvero tale per cui G’⊆ G”⊆ G





•




6

Prof. Pier Luca Lanzi
Rappresentazione Grafi

•
•

•

10

Poniamo
n = |V| numero di nodi
m = |E| numero di archi
Matrice di adiacenza
Spazio richiesto O(n2)
Verificare se il vertice u è adiacente a v richiede tempo
O(1)
Elencare tutti gli archi costa O(n2)
Liste di adiacenza
Spazio richiesto O(n+m)
Verificare se il vertice u è adiacente a v richiede tempo
O(n)
Elencare tutti gli archi costa O(n+m)











Prof. Pier Luca Lanzi
Inferfaccia

11

Prof. Pier Luca Lanzi
Matrice di Adiacenza:
Grafi Orientati

12

Spazio: n2
1

2

3
1
6
4

5

Prof. Pier Luca Lanzi

1
0
2
0
3
0
4
0
5
0
6
0

2

3

4

5

0

1

0

1

0

0

0

1

0

0

0

0

0

0

1

1

0

1

0

0

0

0

0

1

0

0

0

0

0

0

6
Matrice di Adiacenza:
Grafi Non Orientati

13
13

Spazio: n2 oppure
n(n+1)/2
1

4

5

Prof. Pier Luca Lanzi

6

0

1

0

1

0

0

1

0

1

0

0

0

0

1

0

1

1

0

4

1

0

1

0

1

0

5

0

0

1

1

0

0

6

6

5

3

A
1

4

2

3

3

1
2

2

0

0

0

0

0

0
Lista di Adiacenza:
Grafi Orientati

14

G.adj(u) = { v | (u,v) ∈ E }

Spazio: a*n + b*m

2
3

1
6
4

5

Prof. Pier Luca Lanzi
Liste di Adiacenza:
Grafi Non Orientati

15

G.adj(u) = { v | [u,v] ∈ E or [v,u] ∈ E}

2
3
A
1
6

4

5

Prof. Pier Luca Lanzi

Spazio: a*n + 2*b*m
a
b
Grafi Pesati

•
•

•

16

In alcuni casi ogni arco ha un peso (costo, guadagno) associato
Il peso può essere determinato tramite una funzione di costo
p: V ×V → R, dove R è l’insieme dei numeri reali
Quando tra due vertici non esiste un arco, il peso è infinito
1

3
1

1

7

6

8
4

5

Prof. Pier Luca Lanzi

*

1

*

*

3

*

4

*

*

*

*

4

*

4

7

*

4

4

3

3

3

*

2

2

3

1
4

2

1

*

4

*

8

*

*

*

7

8

*

*

*

*

*

*

*

*

5
6

4

5

6
Grado di un Vertice

•

•

17

In un grafo non orientato, il grado di un vertice è il numero
di archi che partono da esso
In un grafo orientato, il grado entrante (uscente) di un
vertice è il numero di archi incidenti in (da) esso

2
3

2

A
1
2

3

4

in : 2
out: 1
1

5 2

3
60

Prof. Pier Luca Lanzi

2

in : 1
out: 1

in : 2
out: 1

3

4
in : 2
out: 2

5
6

in : 0
out: 0

in : 1
out: 1
Cammini

•

•

18

In un grafo orientato G=(V,E)
un cammino di lunghezza k è una sequenza di vertici u0, u1, ..., uk
tale che (ui, ui+1) ∈ E per 0 ≤ i ≤ k–1
In un grafo non orientato G=(V,E)
un cammino di lunghezza k è una sequenza di vertici u0, u1, ..., uk
tale che
[ui, ui+1] ∈ E per 0 ≤ i ≤ k–1




2
3
1

4

Esempio: 1, 2, 3, 5, 4 è una
catena nel grafo con lunghezza 4
Un cammino (catena) si dice
semplice se tutti i suoi vertici sono
distinti (compaiono una sola volta
nella sequenza)

5

Prof. Pier Luca Lanzi
Cicli

•

•

19

In un grafo orientato G=(V,E)
un ciclo di lunghezza k è un cammino u0, u1, ..., uk tale che
(ui, ui+1) ∈ E per 0 ≤ i ≤ k–1, u0 = uk, e k>2
In un grafo non orientato G=(V,E)
un circuito di lunghezza k è una catena u0, u1, ..., uk tale che
[ui, ui+1] ∈ E per 0 ≤ i ≤ k–1, u0 = uk, e k>2




2
3
1

Esempio: 1, 2, 3, 5, 4, 1 è un
circuito con lunghezza 5
Un ciclo (circuito) si dice semplice se
tutti i suoi vertici sono distinti
(tranne ovviamente l’ultimo)

4

5

Prof. Pier Luca Lanzi
Grafi Aciclici

20

Un grafo orientato aciclico è detto
DAG (Directed Acyclic Graph)

2
3
1

Questo grafo è
aciclico

6
2

4

3

5
1

6

2
3
1

Questo grafo non è
aciclico
4

4
6
5

Prof. Pier Luca Lanzi

5
Grafo Completo

•

21

Grafo che ha un arco tra ogni coppia di vertici.
Questo grafo è completo
2
3

Questo grafo non è completo

1

2
3

1

4

4

5

Prof. Pier Luca Lanzi

5
Alberi

•
•
•

22

Un albero libero è un grafo non orientato connesso, aciclico
Se qualche vertice è detto radice, otteniamo un albero radicato
Un insieme di alberi è detta foresta
2

2
3

3

1

1
6
4

5

Prof. Pier Luca Lanzi

6
4

5
Alberi di Copertura

•

23

In un grafo non orientato G=(V, E), un albero di copertura
T è un albero libero T = (V, E’) composto da tutti i nodi di
V e da un sottoinsieme degli archi (E’⊆ E), tale per cui
tutte le coppie di nodi del grafo sono connesse da una
sola catena nell’albero.

2
3
1
6
4

Prof. Pier Luca Lanzi

5
Attraversamento Grafi

•

24

Definizione
Dato un grafo G=(V, E) ed un vertice r di V (detto sorgente o
radice), visitare ogni vertice raggiungibile nel grafo dal vertice r
Ogni nodo deve essere visitato una volta sola





•
•

Visita in ampiezza (breadth-first search)
Visita i nodi “espandendo” la frontiera fra nodi scoperti/da scoprire
Esempi: Cammini più brevi da singola sorgente




Visita in profondità (depth-first search)
Visita i nodi andando il “più lontano possibile” nel grafo
Esempi: Componenti fortemente connesse, ordinamento
topologico




Prof. Pier Luca Lanzi
Algoritmo Generico di Visita

25

•
•

Prof. Pier Luca Lanzi

S è l'insieme
frontiera
Il funzionamento
di
insert() e remove()
non è specificato
Visita in Ampiezza:
Breadth First Search (BFS)

•

•

•

26

Obiettivo: visitare i nodi a distanze crescenti dalla sorgente
Visitare i nodi a distanza k prima di visitare i nodi a distanza k+1



Generare un albero BF (breadth-first)
Albero contenente tutti i vertici raggiungibili da r e tale che il
cammino da r ad un nodo nell'albero corrisponde al cammino più
breve nel grafo



Applicazione
Calcolare la distanza minima da s a tutti i vertici raggiungibili
Numero di archi attraversati per andare da r ad un vertice




Prof. Pier Luca Lanzi
Visita in Ampiezza:
Breadth First Search (BFS)

27

•

•

Prof. Pier Luca Lanzi

Insieme S gestito
tramite una coda
Visitato[v]
corrisponde alla
marcatura del nodo v
Applicazione della BFS:
Numero di Erdös

•
•

Paul Erdös (1913-1996)
Matematico
Più di 1500 articoli, con più di 500 coautori
Numero di Erdös
Erdös ha erdös = 0
I co-autori di Erdös hanno erdös = 1
Se X ha scritto una pubblicazione
scientifica con un co-autore con erdös =
k, ma non con un co-autore con erdös <
k, X ha
erdös=k +1
Chi non è raggiunto da questa
definizione ha erdös = +∞
Vediamo un’applicazione di BFS per
calcolare il numero di Erdös










•

Prof. Pier Luca Lanzi

28
Calcolo del numero di Erdös

Prof. Pier Luca Lanzi

29
Esempio

30

0
6
2
3
1

1
0
11

4

5
9

7

Coda:{6}

Prof. Pier Luca Lanzi

1
2
Esempio

31

0

1

6
1

2
3

9

1
11

1
4

5
8

7

Coda:{2,4,9}

Prof. Pier Luca Lanzi

1
0
Esempio

32

0

1

6
1

2
3
1

2

9

2
11

1
4

5
8

7

Coda:{4,9,3,1}

Prof. Pier Luca Lanzi

1
0
Esempio

33

0

1

6
1

2
3
1

2

9

2
11

1
4

5

2
8

7

Coda:{9,3,1,5}

Prof. Pier Luca Lanzi

1
0
Esempio

34

0

1

6
1

2
3
1

2

9

2
11

1
4

5

2
8
2

7

Coda:{3,1,5,8}

Prof. Pier Luca Lanzi

1
0
Esempio

35

0

1

6
1

2
3
1

2

9

2
11

1
4

5

2
8
2

7

Coda:{1,5,8}

Prof. Pier Luca Lanzi

1
0
Esempio

36

0

1

6
1

2
3
1

2

9

2
11

1
4

5

2
8
2

7

Coda:{5,8}

Prof. Pier Luca Lanzi

1
0
Esempio

37

0

1

6
1

2
3
1

2

9

2
11

1
4

5

2
8
2

3

7

Coda:{8,7}

Prof. Pier Luca Lanzi

1
0
Esempio

38

0

1

6
1

2
3
1

2

9

2
11

1
4

5

2
8
2

3

7

Coda:{7}

Prof. Pier Luca Lanzi

1
0
Esempio

39

0

1

6
1

2
3
1

2

9

2
11

1
4

5

2
8
2

3

7

Coda:{}

Prof. Pier Luca Lanzi

1
0
Albero dei Cammini BFS

•

40

La visita BFS può essere utilizzata per ottenere il cammino più breve
fra due vertici (numero di archi)
Albero di copertura di G radicato in r
Memorizzato tramite vettore dei padri p
Figli di u - nodi v tali che (u,v) ∈ E
e v non è ancora visitato





Prof. Pier Luca Lanzi
Algoritmo Generico di Visita

•

41

Alcune definizioni
L'albero T contiene i vertici visitati
S ⊆ T contiene i vertici aperti:
vertici i cui archi uscenti non sono ancora stati percorsi
T-S ⊆ T contiene i vertici chiusi:
vertici i cui archi uscenti sono stati tutti percorsi
V-T contiene i vertici non visitati
Se u si trova lungo il cammino che va da r al nodo v, diciamo che
u è un antenato di v, v è un discendente di u







•

Alcune cose da notare:
I nodi vengono visitati al più una volta (marcatura)
Tutti i nodi raggiungibili da r vengono visitati
Ne segue che T contiene esattamente tutti i nodi raggiungibili da r





Prof. Pier Luca Lanzi
Visita in Profondità:
Depth First Search (DFS)

•

•

Visita in profondità
E' spesso una parte della soluzione di altri problemi
Utilizzata per coprire l'intero grafo, non solo i nodi
raggiungibili da una singola sorgente (diversamente
da BFS)




Risultato
Invece di un albero, una foresta DF (depth-first) Gπ=(V,
Eπ)
Contenente un insieme di alberi DF




•

42

Struttura di dati
Ricorsione al posto di una pila esplicita



Prof. Pier Luca Lanzi
Visita DFS

43

DFS(Graph G, Node u, boolean[] visitato)
Esamina il nodo u (se pre-visita)
foreach v in G.adj(u) do
Esamina l’arco (u,v)
if (not visitato(v))
visitato[v] = true;
DFS(G,v,visitato);
Esamina il nodo u (se post-visita)

Prof. Pier Luca Lanzi
Applicazioni DFS:
Componente Connesse

•

•

Problema
Verificare se un grafo non orientato è connesso
Identificare le componenti connesse di cui è composto
Soluzione
Un grafo è connesso se, al termine della DFS, tutti i nodi sono
stati marcati
Altrimenti, una singola passata non è sufficiente e la visita deve
ripartire da un nodo non marcato, scoprendo una nuova porzione
del grafo
Strutture dati
Vettore id degli identificatori di componente
id[u] è l’identificatore della componente connessa a cui appartiene
u






•

45




Prof. Pier Luca Lanzi
Componenti Connesse

Prof. Pier Luca Lanzi

46
Componenti Connesse

47

1
3

1
1

2
5

2

2
6

3

1
1
0

2
4

1

2

7
9

2
8

Prof. Pier Luca Lanzi

3
11
Alberi di Copertura DFS

•

•

48

La visita DFS genera l’albero (foresta) dei cammini DFS
Tutte le volte che viene incontrato un arco che connette un nodo
marcato ad uno non marcato, esso viene inserito nell’albero T
Gli archi non inclusi in T possono essere divisi
in tre categorie durante la visita:
se l’arco è esaminato passando da un nodo di T
ad un altro nodo che è suo antenato in T , è
detto arco all’indietro
se l’arco è esaminato passando da
un nodo di T ad un suo discendente
(che non sia figlio) in T è detto arco in avanti
altrimenti, è detto arco
di attraversamento







Prof. Pier Luca Lanzi
Schema DFS

•
•

49

Variabili globali
time: orologio
dt: discovery time
ft: finish time
Significato
dt[v]=0, v non ancora
visitato
dt[u]>dt[v] e ft[v]!=0
(u,v) e’ in avanti








Prof. Pier Luca Lanzi
Esempio

51

[1, ]
F

[2, ]
B

C

I

A

M
D

E

G

Prof. Pier Luca Lanzi

H

L
Esempio

52

[1, ]
F

[2, ]
[3, ]

B

C

I

A

M
D

E

G

Prof. Pier Luca Lanzi

H

L
Esempio

53

[1, ]
F

[2, ]
[3, ]

B

C

I

A

M
[4, ] D

E

G

Prof. Pier Luca Lanzi

H

L
Esempio

54

[1, ]
F

[2, ]
[3, ]

B
C

I

A
M
[5, ]
[4, ] D

E
H

G

Prof. Pier Luca Lanzi

L
Esempio

55

[1, ]
F

[2, ]
[3, ]

B

C

I
[6, ]

A

M
[5, ]
[4, ] D

E

G

Prof. Pier Luca Lanzi

H

L
Esempio

56

[1, ]
F

[2, ]
[3, ]

B

C

I
[6, 7]

A

M
[5, ]
[4, ] D

E

G

Prof. Pier Luca Lanzi

H

L
Esempio

57

[1, ]
F

[2, ]
[3, ]

B

C

I
[6, 7]

A

M
[5, ]
[4, ] D

E

G

[8, ]

Prof. Pier Luca Lanzi

H

L
Esempio

58

[1, ]
F

[2, ]
[3, ]

B

C

I
[6, 7]

A

M
[5, ]
[4, ] D

E

H
[9, ]

G

[8, ]

Prof. Pier Luca Lanzi

L
Esempio

59

[1, ]
F

[2, ]
[3, ]

B

C

I
[6, 7]

A

[10, ]

M
[5, ]
[4, ] D

E

H
[9, ]

G

[8, ]

Prof. Pier Luca Lanzi

L
Esempio

[2, 17]
B
[3, 16]

60

[1, 18]
F

C

I
[6, 7]

A

[10, 11]

M
[5,14 ]
[4,15] D

E

H
[9, 12]

G

[8, 13]

Prof. Pier Luca Lanzi

L
Esempio

[2, 17]
B
[3, 16]

61

[1, 18]
F
C

I
[6, 7]

A

[10, 11]

[19, ]
M

[5,14 ]
[4,15] D

E

H
[9, 12]

G

[8, 13]

Prof. Pier Luca Lanzi

L
Esempio

[2, 17]
B
[3, 16]

62

[1, 18]
F
C

I
[6, 7]

A

[10, 11]

[19, ]

M
[5,14 ]
[4,15] D

E

[20, ]
H
[9, 12]

G

[8, 13]

Prof. Pier Luca Lanzi

L
Esempio

[2, 17]
B
[3, 16]

63

[1, 18]
F
C

I
[6, 7]

A

[10, 11]

[19, 22]

M
[5,14 ]
[4,15] D

E

[20, 21]
H
[9, 12]

G

[8, 13]

Prof. Pier Luca Lanzi

L
Classificazione degli Archi

Prof. Pier Luca Lanzi

64
Classificazione degli Archi

•

•

65

Cosa serve le classificazione?
E' possibile dimostrare alcune proprietà, che
poi possono essere sfruttate negli algoritmi
Esempio: DAG non hanno archi all'indietro (dimostrare)



Prof. Pier Luca Lanzi
Ordinamento Topologico

•

66

Dato un DAG G (direct acyclic graph), un ordinamento topologico su
G è un ordinamento lineare dei suoi vertici tale per cui:
Se G contiene l’arco (u,v), allora u compare prima di v
nell’ordinamento
Per transitività, ne consegue che se v è raggiungibile da u,
allora u compare prima di v nell'ordinamento
Nota: possono esserci più ordinamenti topologici





Prof. Pier Luca Lanzi
Ordinamento Topologico

•

•

67

Problema: Fornire un algoritmo che dato un grafo
orientato aciclico, restituisca un ordinamento topologico
Due Approcci
Diretto
Trovare ogni vertice che non ha alcun arco



incidente in ingresso

Stampare questo vertice e rimuoverlo,
insieme ai suoi archi

 Basato su DFS

Ripetere la procedura finché tutti i vertici
risultano rimossi
Esercizio: scrivere lo pseudocodice
per
questo algoritmo
Qual è la complessità? (con matrici
di adiacenza, con liste di
adiacenza)

Prof. Pier Luca Lanzi
Soluzione Diretta
2
1

3

68

2
4

5

3

2
4

5

Output:

4
5

Output: 1

Output: 1 3

2
4

Output: 1 3 5

4

Output: 1 3 5 2

Prof. Pier Luca Lanzi

Output: 1 3 5 2 4
Ordinamento Topologico con DFS

•

•

Algoritmo
Si effettua una DFS
L’operazione di visita consiste
nell’aggiungere il vertice alla
testa di una lista“at finish time”
Restituire la lista di vertici
Output
Sequenza ordinata di vertici,
in ordine inverso di finish time






Prof. Pier Luca Lanzi

69
Ordinamento Topologico Basato su DFS

Prof. Pier Luca Lanzi

70
Grafi Fortemente Connessi e
Componenti Fortemente Connesse

•

71

In un grafo orientato G
G è fortemente connesso ⇔ esiste un cammino da ogni vertice ad
ogni altro vertice
Un grafo G’ = (V’, E’) è una componente fortemente connessa di
G ⇔ è un sottografo di G fortemente connesso e massimale
Definizioni
G’ è un sottografo di G (G’ ⊆ G) se
2
e solo se V’⊆V e E’ ⊆ E
3
G’ è massimale ⇔ non esiste
1
un sottografo G” di G che sia
6
fortemente connesso e
“più grande” di G’, ovvero tale
per cui G’ ⊆ G” ⊆ G.
4





•





5

Prof. Pier Luca Lanzi
Componenti Fortemente Connesse

•

•

72

Algoritmo (Kosaraju, 1978)
1. Effettua una DFS di G
2. Calcola il grafo trasposto GT
3. Effettua una DFS di GT esaminando i vertici in ordine
inverso di tempo di fine
4. Fornisci i vertici di ogni albero della foresta depth-first
prodotta al passo 3 come una diversa SCC
Grafo trasposto
Dato un grafo G = (V, E), il grafo trasposto GT = (V, ET
) è formato dagli stessi nodi, mentre gli archi hanno
direzioni invertite: i.e, ET ={(u,v) | (v,u) ∈ E}



Prof. Pier Luca Lanzi
Componenti Fortemente Connesse

Prof. Pier Luca Lanzi

73
Componenti Fortemente Connesse

Prof. Pier Luca Lanzi

74
Componenti Fortemente Connesse:
dimostrazione correttezza

•
•

75

Si può estendere il concetto di dt e ft al grafo delle componenti

Teorema
Siano C e C’ due componenti distinte nel grafo orientato G = (V,
E). Suppo- niamo che esista un arco (C, C’) ∈ Ec. Allora ft(C) >
ft(C’)



[9,10]
[11,12]

[1, 8]

2

3

1
6 [5,7]
[2, 7]
4
[3,4]
Prof. Pier Luca Lanzi

5

Mais conteúdo relacionado

Destaque

I 6 gradi di separazione della cultura. Da CLAPie al resto del mondo.
I 6 gradi di separazione della cultura. Da CLAPie al resto del mondo.I 6 gradi di separazione della cultura. Da CLAPie al resto del mondo.
I 6 gradi di separazione della cultura. Da CLAPie al resto del mondo.21Style
 
An Optimal Algorithm for On-Line Bipartite Matching
An Optimal Algorithm for On-Line Bipartite MatchingAn Optimal Algorithm for On-Line Bipartite Matching
An Optimal Algorithm for On-Line Bipartite MatchingTiziana Spata
 
Facebook Open Graph: Tutto il web in un Grafo! - Daniele Ghidoli - Be-wizard ...
Facebook Open Graph: Tutto il web in un Grafo! - Daniele Ghidoli - Be-wizard ...Facebook Open Graph: Tutto il web in un Grafo! - Daniele Ghidoli - Be-wizard ...
Facebook Open Graph: Tutto il web in un Grafo! - Daniele Ghidoli - Be-wizard ...Daniele Ghidoli
 
Facebook e la teoria dei grafi
Facebook e la teoria dei grafiFacebook e la teoria dei grafi
Facebook e la teoria dei grafiMadd Maths
 
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli Algoritmi
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli AlgoritmiAlgoritmi e Calcolo Parallelo 2012/2013 - Analisi degli Algoritmi
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli AlgoritmiPier Luca Lanzi
 
Guida all'estrazione di dati dai Social Network
Guida all'estrazione di dati dai Social NetworkGuida all'estrazione di dati dai Social Network
Guida all'estrazione di dati dai Social NetworkLeonardo Di Donato
 
Focus Junior - 14 Maggio 2016
Focus Junior - 14 Maggio 2016Focus Junior - 14 Maggio 2016
Focus Junior - 14 Maggio 2016Pier Luca Lanzi
 

Destaque (8)

I 6 gradi di separazione della cultura. Da CLAPie al resto del mondo.
I 6 gradi di separazione della cultura. Da CLAPie al resto del mondo.I 6 gradi di separazione della cultura. Da CLAPie al resto del mondo.
I 6 gradi di separazione della cultura. Da CLAPie al resto del mondo.
 
Networks Reti
Networks RetiNetworks Reti
Networks Reti
 
An Optimal Algorithm for On-Line Bipartite Matching
An Optimal Algorithm for On-Line Bipartite MatchingAn Optimal Algorithm for On-Line Bipartite Matching
An Optimal Algorithm for On-Line Bipartite Matching
 
Facebook Open Graph: Tutto il web in un Grafo! - Daniele Ghidoli - Be-wizard ...
Facebook Open Graph: Tutto il web in un Grafo! - Daniele Ghidoli - Be-wizard ...Facebook Open Graph: Tutto il web in un Grafo! - Daniele Ghidoli - Be-wizard ...
Facebook Open Graph: Tutto il web in un Grafo! - Daniele Ghidoli - Be-wizard ...
 
Facebook e la teoria dei grafi
Facebook e la teoria dei grafiFacebook e la teoria dei grafi
Facebook e la teoria dei grafi
 
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli Algoritmi
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli AlgoritmiAlgoritmi e Calcolo Parallelo 2012/2013 - Analisi degli Algoritmi
Algoritmi e Calcolo Parallelo 2012/2013 - Analisi degli Algoritmi
 
Guida all'estrazione di dati dai Social Network
Guida all'estrazione di dati dai Social NetworkGuida all'estrazione di dati dai Social Network
Guida all'estrazione di dati dai Social Network
 
Focus Junior - 14 Maggio 2016
Focus Junior - 14 Maggio 2016Focus Junior - 14 Maggio 2016
Focus Junior - 14 Maggio 2016
 

Semelhante a Algoritmi e Calcolo Parallelo 2012/2013 - Grafi

Algoritmi e Calcolo Parallelo 2012/2013 - Tecniche di Analisi
Algoritmi e Calcolo Parallelo 2012/2013 - Tecniche di AnalisiAlgoritmi e Calcolo Parallelo 2012/2013 - Tecniche di Analisi
Algoritmi e Calcolo Parallelo 2012/2013 - Tecniche di AnalisiPier Luca Lanzi
 
Metodi matematici per l’analisi di sistemi complessi
Metodi matematici per l’analisi di sistemi complessiMetodi matematici per l’analisi di sistemi complessi
Metodi matematici per l’analisi di sistemi complessiLino Possamai
 
Dimostrazione pick v1.0
Dimostrazione pick v1.0Dimostrazione pick v1.0
Dimostrazione pick v1.0uffamate
 
Algoritmi e Calcolo Parallelo 2012/2013 - Alberi Binari di Ricerca
Algoritmi e Calcolo Parallelo 2012/2013 - Alberi Binari di RicercaAlgoritmi e Calcolo Parallelo 2012/2013 - Alberi Binari di Ricerca
Algoritmi e Calcolo Parallelo 2012/2013 - Alberi Binari di RicercaPier Luca Lanzi
 
Algoritmi per l'ottimizzazione convessa
Algoritmi per l'ottimizzazione convessaAlgoritmi per l'ottimizzazione convessa
Algoritmi per l'ottimizzazione convessaVittoriano Muttillo
 
Cammini di costo minimo: problemi e algoritmi
Cammini di costo minimo: problemi e algoritmiCammini di costo minimo: problemi e algoritmi
Cammini di costo minimo: problemi e algoritmiMarco Liverani
 
Ripasso dei fasci di rette propri e impropri
Ripasso dei fasci di rette propri e impropriRipasso dei fasci di rette propri e impropri
Ripasso dei fasci di rette propri e impropriRedoocSlide2
 

Semelhante a Algoritmi e Calcolo Parallelo 2012/2013 - Grafi (9)

Algoritmi e Calcolo Parallelo 2012/2013 - Tecniche di Analisi
Algoritmi e Calcolo Parallelo 2012/2013 - Tecniche di AnalisiAlgoritmi e Calcolo Parallelo 2012/2013 - Tecniche di Analisi
Algoritmi e Calcolo Parallelo 2012/2013 - Tecniche di Analisi
 
Metodi matematici per l’analisi di sistemi complessi
Metodi matematici per l’analisi di sistemi complessiMetodi matematici per l’analisi di sistemi complessi
Metodi matematici per l’analisi di sistemi complessi
 
Presentazione
PresentazionePresentazione
Presentazione
 
Dimostrazione pick v1.0
Dimostrazione pick v1.0Dimostrazione pick v1.0
Dimostrazione pick v1.0
 
Algoritmi e Calcolo Parallelo 2012/2013 - Alberi Binari di Ricerca
Algoritmi e Calcolo Parallelo 2012/2013 - Alberi Binari di RicercaAlgoritmi e Calcolo Parallelo 2012/2013 - Alberi Binari di Ricerca
Algoritmi e Calcolo Parallelo 2012/2013 - Alberi Binari di Ricerca
 
Algoritmi per l'ottimizzazione convessa
Algoritmi per l'ottimizzazione convessaAlgoritmi per l'ottimizzazione convessa
Algoritmi per l'ottimizzazione convessa
 
Cammini di costo minimo: problemi e algoritmi
Cammini di costo minimo: problemi e algoritmiCammini di costo minimo: problemi e algoritmi
Cammini di costo minimo: problemi e algoritmi
 
AlgoMooc 05.02. La grande O
AlgoMooc 05.02. La grande OAlgoMooc 05.02. La grande O
AlgoMooc 05.02. La grande O
 
Ripasso dei fasci di rette propri e impropri
Ripasso dei fasci di rette propri e impropriRipasso dei fasci di rette propri e impropri
Ripasso dei fasci di rette propri e impropri
 

Mais de Pier Luca Lanzi

11 Settembre 2021 - Giocare con i Videogiochi
11 Settembre 2021 - Giocare con i Videogiochi11 Settembre 2021 - Giocare con i Videogiochi
11 Settembre 2021 - Giocare con i VideogiochiPier Luca Lanzi
 
Breve Viaggio al Centro dei Videogiochi
Breve Viaggio al Centro dei VideogiochiBreve Viaggio al Centro dei Videogiochi
Breve Viaggio al Centro dei VideogiochiPier Luca Lanzi
 
Global Game Jam 19 @ POLIMI - Morning Welcome
Global Game Jam 19 @ POLIMI - Morning WelcomeGlobal Game Jam 19 @ POLIMI - Morning Welcome
Global Game Jam 19 @ POLIMI - Morning WelcomePier Luca Lanzi
 
Data Driven Game Design @ Campus Party 2018
Data Driven Game Design @ Campus Party 2018Data Driven Game Design @ Campus Party 2018
Data Driven Game Design @ Campus Party 2018Pier Luca Lanzi
 
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...Pier Luca Lanzi
 
GGJ18 al Politecnico di Milano - Presentazione di apertura
GGJ18 al Politecnico di Milano - Presentazione di aperturaGGJ18 al Politecnico di Milano - Presentazione di apertura
GGJ18 al Politecnico di Milano - Presentazione di aperturaPier Luca Lanzi
 
Presentation for UNITECH event - January 8, 2018
Presentation for UNITECH event - January 8, 2018Presentation for UNITECH event - January 8, 2018
Presentation for UNITECH event - January 8, 2018Pier Luca Lanzi
 
DMTM Lecture 20 Data preparation
DMTM Lecture 20 Data preparationDMTM Lecture 20 Data preparation
DMTM Lecture 20 Data preparationPier Luca Lanzi
 
DMTM Lecture 19 Data exploration
DMTM Lecture 19 Data explorationDMTM Lecture 19 Data exploration
DMTM Lecture 19 Data explorationPier Luca Lanzi
 
DMTM Lecture 18 Graph mining
DMTM Lecture 18 Graph miningDMTM Lecture 18 Graph mining
DMTM Lecture 18 Graph miningPier Luca Lanzi
 
DMTM Lecture 17 Text mining
DMTM Lecture 17 Text miningDMTM Lecture 17 Text mining
DMTM Lecture 17 Text miningPier Luca Lanzi
 
DMTM Lecture 16 Association rules
DMTM Lecture 16 Association rulesDMTM Lecture 16 Association rules
DMTM Lecture 16 Association rulesPier Luca Lanzi
 
DMTM Lecture 15 Clustering evaluation
DMTM Lecture 15 Clustering evaluationDMTM Lecture 15 Clustering evaluation
DMTM Lecture 15 Clustering evaluationPier Luca Lanzi
 
DMTM Lecture 14 Density based clustering
DMTM Lecture 14 Density based clusteringDMTM Lecture 14 Density based clustering
DMTM Lecture 14 Density based clusteringPier Luca Lanzi
 
DMTM Lecture 13 Representative based clustering
DMTM Lecture 13 Representative based clusteringDMTM Lecture 13 Representative based clustering
DMTM Lecture 13 Representative based clusteringPier Luca Lanzi
 
DMTM Lecture 12 Hierarchical clustering
DMTM Lecture 12 Hierarchical clusteringDMTM Lecture 12 Hierarchical clustering
DMTM Lecture 12 Hierarchical clusteringPier Luca Lanzi
 
DMTM Lecture 11 Clustering
DMTM Lecture 11 ClusteringDMTM Lecture 11 Clustering
DMTM Lecture 11 ClusteringPier Luca Lanzi
 
DMTM Lecture 10 Classification ensembles
DMTM Lecture 10 Classification ensemblesDMTM Lecture 10 Classification ensembles
DMTM Lecture 10 Classification ensemblesPier Luca Lanzi
 
DMTM Lecture 09 Other classificationmethods
DMTM Lecture 09 Other classificationmethodsDMTM Lecture 09 Other classificationmethods
DMTM Lecture 09 Other classificationmethodsPier Luca Lanzi
 
DMTM Lecture 08 Classification rules
DMTM Lecture 08 Classification rulesDMTM Lecture 08 Classification rules
DMTM Lecture 08 Classification rulesPier Luca Lanzi
 

Mais de Pier Luca Lanzi (20)

11 Settembre 2021 - Giocare con i Videogiochi
11 Settembre 2021 - Giocare con i Videogiochi11 Settembre 2021 - Giocare con i Videogiochi
11 Settembre 2021 - Giocare con i Videogiochi
 
Breve Viaggio al Centro dei Videogiochi
Breve Viaggio al Centro dei VideogiochiBreve Viaggio al Centro dei Videogiochi
Breve Viaggio al Centro dei Videogiochi
 
Global Game Jam 19 @ POLIMI - Morning Welcome
Global Game Jam 19 @ POLIMI - Morning WelcomeGlobal Game Jam 19 @ POLIMI - Morning Welcome
Global Game Jam 19 @ POLIMI - Morning Welcome
 
Data Driven Game Design @ Campus Party 2018
Data Driven Game Design @ Campus Party 2018Data Driven Game Design @ Campus Party 2018
Data Driven Game Design @ Campus Party 2018
 
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...
GGJ18 al Politecnico di Milano - Presentazione che precede la presentazione d...
 
GGJ18 al Politecnico di Milano - Presentazione di apertura
GGJ18 al Politecnico di Milano - Presentazione di aperturaGGJ18 al Politecnico di Milano - Presentazione di apertura
GGJ18 al Politecnico di Milano - Presentazione di apertura
 
Presentation for UNITECH event - January 8, 2018
Presentation for UNITECH event - January 8, 2018Presentation for UNITECH event - January 8, 2018
Presentation for UNITECH event - January 8, 2018
 
DMTM Lecture 20 Data preparation
DMTM Lecture 20 Data preparationDMTM Lecture 20 Data preparation
DMTM Lecture 20 Data preparation
 
DMTM Lecture 19 Data exploration
DMTM Lecture 19 Data explorationDMTM Lecture 19 Data exploration
DMTM Lecture 19 Data exploration
 
DMTM Lecture 18 Graph mining
DMTM Lecture 18 Graph miningDMTM Lecture 18 Graph mining
DMTM Lecture 18 Graph mining
 
DMTM Lecture 17 Text mining
DMTM Lecture 17 Text miningDMTM Lecture 17 Text mining
DMTM Lecture 17 Text mining
 
DMTM Lecture 16 Association rules
DMTM Lecture 16 Association rulesDMTM Lecture 16 Association rules
DMTM Lecture 16 Association rules
 
DMTM Lecture 15 Clustering evaluation
DMTM Lecture 15 Clustering evaluationDMTM Lecture 15 Clustering evaluation
DMTM Lecture 15 Clustering evaluation
 
DMTM Lecture 14 Density based clustering
DMTM Lecture 14 Density based clusteringDMTM Lecture 14 Density based clustering
DMTM Lecture 14 Density based clustering
 
DMTM Lecture 13 Representative based clustering
DMTM Lecture 13 Representative based clusteringDMTM Lecture 13 Representative based clustering
DMTM Lecture 13 Representative based clustering
 
DMTM Lecture 12 Hierarchical clustering
DMTM Lecture 12 Hierarchical clusteringDMTM Lecture 12 Hierarchical clustering
DMTM Lecture 12 Hierarchical clustering
 
DMTM Lecture 11 Clustering
DMTM Lecture 11 ClusteringDMTM Lecture 11 Clustering
DMTM Lecture 11 Clustering
 
DMTM Lecture 10 Classification ensembles
DMTM Lecture 10 Classification ensemblesDMTM Lecture 10 Classification ensembles
DMTM Lecture 10 Classification ensembles
 
DMTM Lecture 09 Other classificationmethods
DMTM Lecture 09 Other classificationmethodsDMTM Lecture 09 Other classificationmethods
DMTM Lecture 09 Other classificationmethods
 
DMTM Lecture 08 Classification rules
DMTM Lecture 08 Classification rulesDMTM Lecture 08 Classification rules
DMTM Lecture 08 Classification rules
 

Último

AI nel mondo delle scuole. Formazione docente per creare un ponte con gli stu...
AI nel mondo delle scuole. Formazione docente per creare un ponte con gli stu...AI nel mondo delle scuole. Formazione docente per creare un ponte con gli stu...
AI nel mondo delle scuole. Formazione docente per creare un ponte con gli stu...Human Singularity
 
15 Consoli Castellana Grotte - Lavorare per vivere.pdf
15 Consoli Castellana Grotte - Lavorare per vivere.pdf15 Consoli Castellana Grotte - Lavorare per vivere.pdf
15 Consoli Castellana Grotte - Lavorare per vivere.pdfdalpalcoscenicoallaprevenzione
 
25 ĐỀ THAM KHẢO THI TUYỂN SINH VÀO LỚP 10 THPT MÔN TIẾNG ANH NĂM HỌC 2024 - 2...
25 ĐỀ THAM KHẢO THI TUYỂN SINH VÀO LỚP 10 THPT MÔN TIẾNG ANH NĂM HỌC 2024 - 2...25 ĐỀ THAM KHẢO THI TUYỂN SINH VÀO LỚP 10 THPT MÔN TIẾNG ANH NĂM HỌC 2024 - 2...
25 ĐỀ THAM KHẢO THI TUYỂN SINH VÀO LỚP 10 THPT MÔN TIẾNG ANH NĂM HỌC 2024 - 2...Nguyen Thanh Tu Collection
 
educazione civica storia Martina fellone.pptx
educazione civica storia Martina fellone.pptxeducazione civica storia Martina fellone.pptx
educazione civica storia Martina fellone.pptxPatrickVervenna1
 
BATTERIE A LITIO Martina Fellon 5F A.S. 23/24
BATTERIE A LITIO  Martina Fellon 5F A.S. 23/24BATTERIE A LITIO  Martina Fellon 5F A.S. 23/24
BATTERIE A LITIO Martina Fellon 5F A.S. 23/24PatrickVervenna1
 
1 Liceo Simone Morea Conversano - Ci vediamo stasera.pdf
1 Liceo Simone Morea Conversano - Ci vediamo stasera.pdf1 Liceo Simone Morea Conversano - Ci vediamo stasera.pdf
1 Liceo Simone Morea Conversano - Ci vediamo stasera.pdfdalpalcoscenicoallaprevenzione
 

Último (11)

AI nel mondo delle scuole. Formazione docente per creare un ponte con gli stu...
AI nel mondo delle scuole. Formazione docente per creare un ponte con gli stu...AI nel mondo delle scuole. Formazione docente per creare un ponte con gli stu...
AI nel mondo delle scuole. Formazione docente per creare un ponte con gli stu...
 
16 Calasso Lecce - Ricordi di lavoro.pdf
16 Calasso Lecce - Ricordi di lavoro.pdf16 Calasso Lecce - Ricordi di lavoro.pdf
16 Calasso Lecce - Ricordi di lavoro.pdf
 
11 Modugno Conversano - Per chi resta.pdf
11 Modugno Conversano - Per chi resta.pdf11 Modugno Conversano - Per chi resta.pdf
11 Modugno Conversano - Per chi resta.pdf
 
15 Consoli Castellana Grotte - Lavorare per vivere.pdf
15 Consoli Castellana Grotte - Lavorare per vivere.pdf15 Consoli Castellana Grotte - Lavorare per vivere.pdf
15 Consoli Castellana Grotte - Lavorare per vivere.pdf
 
14 Galileo Galilei Bitonto - Rosso latte.pdf
14 Galileo Galilei Bitonto - Rosso latte.pdf14 Galileo Galilei Bitonto - Rosso latte.pdf
14 Galileo Galilei Bitonto - Rosso latte.pdf
 
2 Padre A. M. Tannoia Corato - L'ultimo giorno.pdf
2 Padre A. M. Tannoia Corato - L'ultimo giorno.pdf2 Padre A. M. Tannoia Corato - L'ultimo giorno.pdf
2 Padre A. M. Tannoia Corato - L'ultimo giorno.pdf
 
13 Consoli Castellana grotte - La caduta.pdf
13 Consoli Castellana grotte - La caduta.pdf13 Consoli Castellana grotte - La caduta.pdf
13 Consoli Castellana grotte - La caduta.pdf
 
25 ĐỀ THAM KHẢO THI TUYỂN SINH VÀO LỚP 10 THPT MÔN TIẾNG ANH NĂM HỌC 2024 - 2...
25 ĐỀ THAM KHẢO THI TUYỂN SINH VÀO LỚP 10 THPT MÔN TIẾNG ANH NĂM HỌC 2024 - 2...25 ĐỀ THAM KHẢO THI TUYỂN SINH VÀO LỚP 10 THPT MÔN TIẾNG ANH NĂM HỌC 2024 - 2...
25 ĐỀ THAM KHẢO THI TUYỂN SINH VÀO LỚP 10 THPT MÔN TIẾNG ANH NĂM HỌC 2024 - 2...
 
educazione civica storia Martina fellone.pptx
educazione civica storia Martina fellone.pptxeducazione civica storia Martina fellone.pptx
educazione civica storia Martina fellone.pptx
 
BATTERIE A LITIO Martina Fellon 5F A.S. 23/24
BATTERIE A LITIO  Martina Fellon 5F A.S. 23/24BATTERIE A LITIO  Martina Fellon 5F A.S. 23/24
BATTERIE A LITIO Martina Fellon 5F A.S. 23/24
 
1 Liceo Simone Morea Conversano - Ci vediamo stasera.pdf
1 Liceo Simone Morea Conversano - Ci vediamo stasera.pdf1 Liceo Simone Morea Conversano - Ci vediamo stasera.pdf
1 Liceo Simone Morea Conversano - Ci vediamo stasera.pdf
 

Algoritmi e Calcolo Parallelo 2012/2013 - Grafi

  • 1. Grafi Algoritmi e Calcolo Parallelo Prof. Pier Luca Lanzi
  • 2. Riferimenti • • 2 Bertossi Alan A., Montresor Alberto. “Algoritmi e strutture di dati” (seconda edizione), CittàStudi 2010 Stanley B. Lippman, Barbara E. Moo, Josee Lajoie “C++ Primer”, 5th Edition Addison-Wesley Prof. Pier Luca Lanzi
  • 4. Problemi Tipici su Grafi • • • • • 4 Visite Visite in ampiezza (cammini minimi singola sorgente) Visite in profondità (ordinamento topologico, componenti fortemente connesse) Cammini minimi Da singola sorgente Fra tutte le coppie di vertici Alberi di connessione minimi Problemi di flusso ....     Prof. Pier Luca Lanzi
  • 5. Grafi Orientati • 5 Un grafo orientato G è definito dalla coppia (V, E) V è l’insieme finito dei vertici E è l’insieme degli archi (relazione binaria in V)   B C A F D E V = {A, B, C, D, E, F} E = { (A,B), (A,D),(B,C),(D,C),(E,C), (D,E),(D,A) } Prof. Pier Luca Lanzi
  • 6. Grafi Non Orientati • 6 Un grafo non orientato G è definito dalla coppia (V, E) V è l’insieme finito dei vertici E è l’insieme degli archi (coppie ordinate di elementi di V)   B C A F D E V = {A, B, C, D, E, F} E = { (A,B), (A,D), (B,C), (C,D),(C,E),(D,E) } Prof. Pier Luca Lanzi
  • 7. Definizioni: Incidenza e Adiacenza • • • 7 In un grafo orientato un arco (u,v) si dice incidente da u in v In un grafo non orientato la relazione di adiacenza tra vertici è simmetrica Un vertice v si dice adiacente a u se e solo se (u, v) ∈ E (1,2) è incidente da 1 a 2 (1,4) è incidente da 1 a 4 (4,1) è incidente da 4 a 1 2   3 1 6 4 5 Prof. Pier Luca Lanzi 2 è adiacente ad 1 3 è adiacente a 2, 4, 5 1 è adiacente a 4 e viceversa 2 non è adiacente a 3,4 6 non è adiacente ad alcun vertice
  • 8. Componenti Fortemente Connesse • • 8 Terminologia Componenti connesse (connected components, CC) Componenti fortemente connesse (strongly connected components, SCC)   Motivazioni Molti algoritmi che operano sui grafi iniziano decomponendo il grafo nelle sue componenti L'algoritmo viene poi eseguito su ognuna delle componenti I risultati vengono poi ricomposti assieme    Prof. Pier Luca Lanzi
  • 9. Grafi Connessi e Componenti Connesse • 9 In un grafo non orientato G G è connesso ⇔ esiste un cammino da ogni vertice ad ogni altro vertice Un grafo G’= (V’, E’) è una componente connessa di G ⇔ è un sottografo di G fortemente connesso e massimale Definizioni 2 3 G’ è un sottografo di A G (G’⊆ G) se e solo se 1 V’⊆V e E’⊆ E G’ è massimale ⇔ non esiste un sottografo G” di G che sia 4 5 connesso e “più grande” di G’, ovvero tale per cui G’⊆ G”⊆ G   •   6 Prof. Pier Luca Lanzi
  • 10. Rappresentazione Grafi • • • 10 Poniamo n = |V| numero di nodi m = |E| numero di archi Matrice di adiacenza Spazio richiesto O(n2) Verificare se il vertice u è adiacente a v richiede tempo O(1) Elencare tutti gli archi costa O(n2) Liste di adiacenza Spazio richiesto O(n+m) Verificare se il vertice u è adiacente a v richiede tempo O(n) Elencare tutti gli archi costa O(n+m)         Prof. Pier Luca Lanzi
  • 12. Matrice di Adiacenza: Grafi Orientati 12 Spazio: n2 1 2 3 1 6 4 5 Prof. Pier Luca Lanzi 1 0 2 0 3 0 4 0 5 0 6 0 2 3 4 5 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 6
  • 13. Matrice di Adiacenza: Grafi Non Orientati 13 13 Spazio: n2 oppure n(n+1)/2 1 4 5 Prof. Pier Luca Lanzi 6 0 1 0 1 0 0 1 0 1 0 0 0 0 1 0 1 1 0 4 1 0 1 0 1 0 5 0 0 1 1 0 0 6 6 5 3 A 1 4 2 3 3 1 2 2 0 0 0 0 0 0
  • 14. Lista di Adiacenza: Grafi Orientati 14 G.adj(u) = { v | (u,v) ∈ E } Spazio: a*n + b*m 2 3 1 6 4 5 Prof. Pier Luca Lanzi
  • 15. Liste di Adiacenza: Grafi Non Orientati 15 G.adj(u) = { v | [u,v] ∈ E or [v,u] ∈ E} 2 3 A 1 6 4 5 Prof. Pier Luca Lanzi Spazio: a*n + 2*b*m a b
  • 16. Grafi Pesati • • • 16 In alcuni casi ogni arco ha un peso (costo, guadagno) associato Il peso può essere determinato tramite una funzione di costo p: V ×V → R, dove R è l’insieme dei numeri reali Quando tra due vertici non esiste un arco, il peso è infinito 1 3 1 1 7 6 8 4 5 Prof. Pier Luca Lanzi * 1 * * 3 * 4 * * * * 4 * 4 7 * 4 4 3 3 3 * 2 2 3 1 4 2 1 * 4 * 8 * * * 7 8 * * * * * * * * 5 6 4 5 6
  • 17. Grado di un Vertice • • 17 In un grafo non orientato, il grado di un vertice è il numero di archi che partono da esso In un grafo orientato, il grado entrante (uscente) di un vertice è il numero di archi incidenti in (da) esso 2 3 2 A 1 2 3 4 in : 2 out: 1 1 5 2 3 60 Prof. Pier Luca Lanzi 2 in : 1 out: 1 in : 2 out: 1 3 4 in : 2 out: 2 5 6 in : 0 out: 0 in : 1 out: 1
  • 18. Cammini • • 18 In un grafo orientato G=(V,E) un cammino di lunghezza k è una sequenza di vertici u0, u1, ..., uk tale che (ui, ui+1) ∈ E per 0 ≤ i ≤ k–1 In un grafo non orientato G=(V,E) un cammino di lunghezza k è una sequenza di vertici u0, u1, ..., uk tale che [ui, ui+1] ∈ E per 0 ≤ i ≤ k–1   2 3 1 4 Esempio: 1, 2, 3, 5, 4 è una catena nel grafo con lunghezza 4 Un cammino (catena) si dice semplice se tutti i suoi vertici sono distinti (compaiono una sola volta nella sequenza) 5 Prof. Pier Luca Lanzi
  • 19. Cicli • • 19 In un grafo orientato G=(V,E) un ciclo di lunghezza k è un cammino u0, u1, ..., uk tale che (ui, ui+1) ∈ E per 0 ≤ i ≤ k–1, u0 = uk, e k>2 In un grafo non orientato G=(V,E) un circuito di lunghezza k è una catena u0, u1, ..., uk tale che [ui, ui+1] ∈ E per 0 ≤ i ≤ k–1, u0 = uk, e k>2   2 3 1 Esempio: 1, 2, 3, 5, 4, 1 è un circuito con lunghezza 5 Un ciclo (circuito) si dice semplice se tutti i suoi vertici sono distinti (tranne ovviamente l’ultimo) 4 5 Prof. Pier Luca Lanzi
  • 20. Grafi Aciclici 20 Un grafo orientato aciclico è detto DAG (Directed Acyclic Graph) 2 3 1 Questo grafo è aciclico 6 2 4 3 5 1 6 2 3 1 Questo grafo non è aciclico 4 4 6 5 Prof. Pier Luca Lanzi 5
  • 21. Grafo Completo • 21 Grafo che ha un arco tra ogni coppia di vertici. Questo grafo è completo 2 3 Questo grafo non è completo 1 2 3 1 4 4 5 Prof. Pier Luca Lanzi 5
  • 22. Alberi • • • 22 Un albero libero è un grafo non orientato connesso, aciclico Se qualche vertice è detto radice, otteniamo un albero radicato Un insieme di alberi è detta foresta 2 2 3 3 1 1 6 4 5 Prof. Pier Luca Lanzi 6 4 5
  • 23. Alberi di Copertura • 23 In un grafo non orientato G=(V, E), un albero di copertura T è un albero libero T = (V, E’) composto da tutti i nodi di V e da un sottoinsieme degli archi (E’⊆ E), tale per cui tutte le coppie di nodi del grafo sono connesse da una sola catena nell’albero. 2 3 1 6 4 Prof. Pier Luca Lanzi 5
  • 24. Attraversamento Grafi • 24 Definizione Dato un grafo G=(V, E) ed un vertice r di V (detto sorgente o radice), visitare ogni vertice raggiungibile nel grafo dal vertice r Ogni nodo deve essere visitato una volta sola   • • Visita in ampiezza (breadth-first search) Visita i nodi “espandendo” la frontiera fra nodi scoperti/da scoprire Esempi: Cammini più brevi da singola sorgente   Visita in profondità (depth-first search) Visita i nodi andando il “più lontano possibile” nel grafo Esempi: Componenti fortemente connesse, ordinamento topologico   Prof. Pier Luca Lanzi
  • 25. Algoritmo Generico di Visita 25 • • Prof. Pier Luca Lanzi S è l'insieme frontiera Il funzionamento di insert() e remove() non è specificato
  • 26. Visita in Ampiezza: Breadth First Search (BFS) • • • 26 Obiettivo: visitare i nodi a distanze crescenti dalla sorgente Visitare i nodi a distanza k prima di visitare i nodi a distanza k+1  Generare un albero BF (breadth-first) Albero contenente tutti i vertici raggiungibili da r e tale che il cammino da r ad un nodo nell'albero corrisponde al cammino più breve nel grafo  Applicazione Calcolare la distanza minima da s a tutti i vertici raggiungibili Numero di archi attraversati per andare da r ad un vertice   Prof. Pier Luca Lanzi
  • 27. Visita in Ampiezza: Breadth First Search (BFS) 27 • • Prof. Pier Luca Lanzi Insieme S gestito tramite una coda Visitato[v] corrisponde alla marcatura del nodo v
  • 28. Applicazione della BFS: Numero di Erdös • • Paul Erdös (1913-1996) Matematico Più di 1500 articoli, con più di 500 coautori Numero di Erdös Erdös ha erdös = 0 I co-autori di Erdös hanno erdös = 1 Se X ha scritto una pubblicazione scientifica con un co-autore con erdös = k, ma non con un co-autore con erdös < k, X ha erdös=k +1 Chi non è raggiunto da questa definizione ha erdös = +∞ Vediamo un’applicazione di BFS per calcolare il numero di Erdös       • Prof. Pier Luca Lanzi 28
  • 29. Calcolo del numero di Erdös Prof. Pier Luca Lanzi 29
  • 40. Albero dei Cammini BFS • 40 La visita BFS può essere utilizzata per ottenere il cammino più breve fra due vertici (numero di archi) Albero di copertura di G radicato in r Memorizzato tramite vettore dei padri p Figli di u - nodi v tali che (u,v) ∈ E e v non è ancora visitato    Prof. Pier Luca Lanzi
  • 41. Algoritmo Generico di Visita • 41 Alcune definizioni L'albero T contiene i vertici visitati S ⊆ T contiene i vertici aperti: vertici i cui archi uscenti non sono ancora stati percorsi T-S ⊆ T contiene i vertici chiusi: vertici i cui archi uscenti sono stati tutti percorsi V-T contiene i vertici non visitati Se u si trova lungo il cammino che va da r al nodo v, diciamo che u è un antenato di v, v è un discendente di u      • Alcune cose da notare: I nodi vengono visitati al più una volta (marcatura) Tutti i nodi raggiungibili da r vengono visitati Ne segue che T contiene esattamente tutti i nodi raggiungibili da r    Prof. Pier Luca Lanzi
  • 42. Visita in Profondità: Depth First Search (DFS) • • Visita in profondità E' spesso una parte della soluzione di altri problemi Utilizzata per coprire l'intero grafo, non solo i nodi raggiungibili da una singola sorgente (diversamente da BFS)   Risultato Invece di un albero, una foresta DF (depth-first) Gπ=(V, Eπ) Contenente un insieme di alberi DF   • 42 Struttura di dati Ricorsione al posto di una pila esplicita  Prof. Pier Luca Lanzi
  • 43. Visita DFS 43 DFS(Graph G, Node u, boolean[] visitato) Esamina il nodo u (se pre-visita) foreach v in G.adj(u) do Esamina l’arco (u,v) if (not visitato(v)) visitato[v] = true; DFS(G,v,visitato); Esamina il nodo u (se post-visita) Prof. Pier Luca Lanzi
  • 44. Applicazioni DFS: Componente Connesse • • Problema Verificare se un grafo non orientato è connesso Identificare le componenti connesse di cui è composto Soluzione Un grafo è connesso se, al termine della DFS, tutti i nodi sono stati marcati Altrimenti, una singola passata non è sufficiente e la visita deve ripartire da un nodo non marcato, scoprendo una nuova porzione del grafo Strutture dati Vettore id degli identificatori di componente id[u] è l’identificatore della componente connessa a cui appartiene u     • 45   Prof. Pier Luca Lanzi
  • 47. Alberi di Copertura DFS • • 48 La visita DFS genera l’albero (foresta) dei cammini DFS Tutte le volte che viene incontrato un arco che connette un nodo marcato ad uno non marcato, esso viene inserito nell’albero T Gli archi non inclusi in T possono essere divisi in tre categorie durante la visita: se l’arco è esaminato passando da un nodo di T ad un altro nodo che è suo antenato in T , è detto arco all’indietro se l’arco è esaminato passando da un nodo di T ad un suo discendente (che non sia figlio) in T è detto arco in avanti altrimenti, è detto arco di attraversamento     Prof. Pier Luca Lanzi
  • 48. Schema DFS • • 49 Variabili globali time: orologio dt: discovery time ft: finish time Significato dt[v]=0, v non ancora visitato dt[u]>dt[v] e ft[v]!=0 (u,v) e’ in avanti      Prof. Pier Luca Lanzi
  • 50. Esempio 52 [1, ] F [2, ] [3, ] B C I A M D E G Prof. Pier Luca Lanzi H L
  • 51. Esempio 53 [1, ] F [2, ] [3, ] B C I A M [4, ] D E G Prof. Pier Luca Lanzi H L
  • 52. Esempio 54 [1, ] F [2, ] [3, ] B C I A M [5, ] [4, ] D E H G Prof. Pier Luca Lanzi L
  • 53. Esempio 55 [1, ] F [2, ] [3, ] B C I [6, ] A M [5, ] [4, ] D E G Prof. Pier Luca Lanzi H L
  • 54. Esempio 56 [1, ] F [2, ] [3, ] B C I [6, 7] A M [5, ] [4, ] D E G Prof. Pier Luca Lanzi H L
  • 55. Esempio 57 [1, ] F [2, ] [3, ] B C I [6, 7] A M [5, ] [4, ] D E G [8, ] Prof. Pier Luca Lanzi H L
  • 56. Esempio 58 [1, ] F [2, ] [3, ] B C I [6, 7] A M [5, ] [4, ] D E H [9, ] G [8, ] Prof. Pier Luca Lanzi L
  • 57. Esempio 59 [1, ] F [2, ] [3, ] B C I [6, 7] A [10, ] M [5, ] [4, ] D E H [9, ] G [8, ] Prof. Pier Luca Lanzi L
  • 58. Esempio [2, 17] B [3, 16] 60 [1, 18] F C I [6, 7] A [10, 11] M [5,14 ] [4,15] D E H [9, 12] G [8, 13] Prof. Pier Luca Lanzi L
  • 59. Esempio [2, 17] B [3, 16] 61 [1, 18] F C I [6, 7] A [10, 11] [19, ] M [5,14 ] [4,15] D E H [9, 12] G [8, 13] Prof. Pier Luca Lanzi L
  • 60. Esempio [2, 17] B [3, 16] 62 [1, 18] F C I [6, 7] A [10, 11] [19, ] M [5,14 ] [4,15] D E [20, ] H [9, 12] G [8, 13] Prof. Pier Luca Lanzi L
  • 61. Esempio [2, 17] B [3, 16] 63 [1, 18] F C I [6, 7] A [10, 11] [19, 22] M [5,14 ] [4,15] D E [20, 21] H [9, 12] G [8, 13] Prof. Pier Luca Lanzi L
  • 62. Classificazione degli Archi Prof. Pier Luca Lanzi 64
  • 63. Classificazione degli Archi • • 65 Cosa serve le classificazione? E' possibile dimostrare alcune proprietà, che poi possono essere sfruttate negli algoritmi Esempio: DAG non hanno archi all'indietro (dimostrare)  Prof. Pier Luca Lanzi
  • 64. Ordinamento Topologico • 66 Dato un DAG G (direct acyclic graph), un ordinamento topologico su G è un ordinamento lineare dei suoi vertici tale per cui: Se G contiene l’arco (u,v), allora u compare prima di v nell’ordinamento Per transitività, ne consegue che se v è raggiungibile da u, allora u compare prima di v nell'ordinamento Nota: possono esserci più ordinamenti topologici    Prof. Pier Luca Lanzi
  • 65. Ordinamento Topologico • • 67 Problema: Fornire un algoritmo che dato un grafo orientato aciclico, restituisca un ordinamento topologico Due Approcci Diretto Trovare ogni vertice che non ha alcun arco  incidente in ingresso Stampare questo vertice e rimuoverlo, insieme ai suoi archi  Basato su DFS Ripetere la procedura finché tutti i vertici risultano rimossi Esercizio: scrivere lo pseudocodice per questo algoritmo Qual è la complessità? (con matrici di adiacenza, con liste di adiacenza) Prof. Pier Luca Lanzi
  • 66. Soluzione Diretta 2 1 3 68 2 4 5 3 2 4 5 Output: 4 5 Output: 1 Output: 1 3 2 4 Output: 1 3 5 4 Output: 1 3 5 2 Prof. Pier Luca Lanzi Output: 1 3 5 2 4
  • 67. Ordinamento Topologico con DFS • • Algoritmo Si effettua una DFS L’operazione di visita consiste nell’aggiungere il vertice alla testa di una lista“at finish time” Restituire la lista di vertici Output Sequenza ordinata di vertici, in ordine inverso di finish time     Prof. Pier Luca Lanzi 69
  • 68. Ordinamento Topologico Basato su DFS Prof. Pier Luca Lanzi 70
  • 69. Grafi Fortemente Connessi e Componenti Fortemente Connesse • 71 In un grafo orientato G G è fortemente connesso ⇔ esiste un cammino da ogni vertice ad ogni altro vertice Un grafo G’ = (V’, E’) è una componente fortemente connessa di G ⇔ è un sottografo di G fortemente connesso e massimale Definizioni G’ è un sottografo di G (G’ ⊆ G) se 2 e solo se V’⊆V e E’ ⊆ E 3 G’ è massimale ⇔ non esiste 1 un sottografo G” di G che sia 6 fortemente connesso e “più grande” di G’, ovvero tale per cui G’ ⊆ G” ⊆ G. 4   •   5 Prof. Pier Luca Lanzi
  • 70. Componenti Fortemente Connesse • • 72 Algoritmo (Kosaraju, 1978) 1. Effettua una DFS di G 2. Calcola il grafo trasposto GT 3. Effettua una DFS di GT esaminando i vertici in ordine inverso di tempo di fine 4. Fornisci i vertici di ogni albero della foresta depth-first prodotta al passo 3 come una diversa SCC Grafo trasposto Dato un grafo G = (V, E), il grafo trasposto GT = (V, ET ) è formato dagli stessi nodi, mentre gli archi hanno direzioni invertite: i.e, ET ={(u,v) | (v,u) ∈ E}  Prof. Pier Luca Lanzi
  • 73. Componenti Fortemente Connesse: dimostrazione correttezza • • 75 Si può estendere il concetto di dt e ft al grafo delle componenti Teorema Siano C e C’ due componenti distinte nel grafo orientato G = (V, E). Suppo- niamo che esista un arco (C, C’) ∈ Ec. Allora ft(C) > ft(C’)  [9,10] [11,12] [1, 8] 2 3 1 6 [5,7] [2, 7] 4 [3,4] Prof. Pier Luca Lanzi 5