Teoria dei Grafi Parte I. Alberto Caprara DEIS - Università di Bologna

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Teoria dei Grafi Parte I. Alberto Caprara DEIS - Università di Bologna"

Transcript

1 Teoria dei Grafi Parte I Alberto Caprara DEIS - Università di Bologna acaprara@deis.unibo.it

2 Teoria dei Grafi Paradigma di rappresentazione di problemi Grafo G : coppia (V,E) V = insieme di vertici E = insieme di lati (o archi, A) Consente di modellare naturalmente problemi di scelta di percorsi problemi di connessione di punti mediante reti Grafi.2

3 Esempio: rete stradale Nodi: incroci Archi: tratti di strada (orientati e non orientati) Grafi.3

4 Esempio 2: relazioni Grafi.4

5 Esempio 3: Coloring Data una mappa, determinare il minimo numero di colori necessario affinchè regioni adiacenti abbiano colori diversi Grafi.5

6 Grafi multipli e semplici Grafi multipli: più lati tra due vertici semplici: solo un lato tra due vertici Considereremo solo grafi semplici grafo semplice equiv. (1 lato ed 1 vertice in più) Grafi.6

7 Grafi non orientati (simmetrici) G = (V,E) V = n E = m Vertici V = {v 1,, v n } Lati E = {e 1,, e m } e k = (v i, v j ) (v j, v i ) coppie di vertici e v 1 1 e 4 e 5 v 4 e 3 v 2 v 3 e 2 V = {v 1, v 2, v 3, v 4 } E = {e 1, e 2, e 3, e 4, e 5 } = {(v 1,v 2 ), (v 1,v 3 ),... } Grafi.7

8 Grafi orientati (asimmetrici) G = (V,A) V = n A = m Vertici V = {v 1,, v n } Archi A = {a 1,, a m } a k = (v i, v j ) (v j, v i ) coppie ordinate v coda (tail), i v j testa (head) a v 1 1 a 4 a 6 a 5 v 2 a 2 V = {v 1, v 2, v 3, v 4 } A = {a 1, a 2, a 3, a 4, a 5, a 6 } = {... (v 1,v 4 ), (v 4,v 1 ),... } v 4 a 3 v 3 Grafi.8

9 Sommario Grafi non orientati (simmetrici) G = (V,E) V = {v 1,, v n } E = {e 1,, e m } e k = (v i, v j ) (v j, v i ) Grafi orientati (asimmetrici) G = (V,A) V = {v 1,, v n } A = {a 1,, a m } a k = (v i, v j ) (v j, v i ) v 1 v 2 v 1 v 2 v 4 v 3 v 4 v 3 Grafi.9

10 Terminologia Autoanelli: lati o archi (v i, v i ) v i Grafo pesato (orientato e non): ad ogni lato (arco) è associato un peso (costo, ) v j 5 v k c(v j, v k ) = c(e i ) = c(a i ) = c i = c jk = 5 Grafi.10

11 Terminologia (2) v i e v j sono adiacenti se (v i, v j ) E ( A ) v 1 v 2 v 3 v 1 v 2 v 3 due lati sono adiacenti (o consecutivi) se hanno un vertice comune due archisono adiacenti (o consecutivi) se la testa del primo coincide con la coda del secondo v 1 v 2 v 3 v 1 v 2 v 3 v 1 v 2 v 3 Grafi.11

12 Grafi non orientati Stardi v Γ(v) = {v j :(v, v j ) E } Gradodi v d(v) = Γ(v) v 1 v 2 Γ(v 2 )={v 1, v 3 } d(v 2 ) = 2 v 4 v 3 Γ(v 3 )= {v 1, v 2, v 4 } d(v 3 ) = 3 Grafi.12

13 Grafi orientati Forward star di v Γ + (v) = {v j :(v, v j ) A } Backward star di v Γ - (v) = {v j :(v j, v ) A } Semigrado esterno di v d + (v) = Γ + (v) Semigrado interno di v d - (v) = Γ - (v) v 1 v 4 v 2 v 3 Γ + (v 3 )={v 4 } Γ - (v 3 )={v 1, v 2 } d + (v 3 ) = 1 d - (v 3 ) = 2 Grafi.13

14 Sommario Grafi non orientati Γ(v) = {v j :(v, v j ) E } d(v) = Γ(v) Grafi orientati Γ + (v) = {v j :(v, v j ) A } Γ - (v) = {v j :(v j, v ) A } d + (v) = Γ + (v) d - (v) = Γ - (v) v 1 v 2 v 1 v 2 v 4 v 3 v 4 v 3 Grafi.14

15 Terminologia (3) G è completo se v i, v j V, (v i, v j ) E ( A ) (con/senza autoanelli) Grafo parziale G = (V,E ) con E E Sottografo G = (V,E ) con V V, E E Grafi.15

16 Grafi non orientati Dato S V, taglio (cut) associato ad S: δ(s) = {(v i, v j ) : S {v i, v j } = 1 } S v 4 v 2 S = {v 1, v 4, } δ(s) = {(v 2, ), (v 2,v 4 ), (v 1,v 3 )} v 1 v 3 Grafi.16

17 Grafi orientati Dato S V, taglio orientato associato ad S δ + (S) = {(v i, v j ) : v i S, v j S } δ - (S) = {(v i, v j ) : v i S, v j S } δ + (S) δ - (V \ S) Archi interni σ(s) = {(v i, v j ) : v i S, v j S } v 4 v 1 v 2 v 3 S = {v 1, v 4 } σ(s) = {(v 1, v 4 )} δ + (S) = {(v 4,v 2 )} δ - (S) = {(v 3,v 4 ), (v 3,v 1 )} Grafi.17

18 Sommario Grafi non orientati δ(s) = {(v i, v j ): S {v i, v j }=1} Grafi orientati δ + (S) = {(v i, v j ) : v i S, v j S } δ - (S) = {(v i, v j ) : v i S, v j S } δ + (S) δ - (V \ S) σ(s) = {(v i, v j ) : v i S, v j S } v 4 v 2 v 4 v 2 v 1 v 3 v 1 v 3 Grafi.18

19 Terminologia (4) Cammino (path): sequenza di lati (archi) consecutivi v j1 v j2 v j3 v j4 v j5 {(v j1,v j2 ), (v j2,v j3 ), (v j3,v j4 ), (v j k,v jk+1 )} Ciclo o circuito (cycle): cammino con v jk+1 = v j1 semplice: senza ripetizione di vertici elementare: senza ripetizione di archi semplice elementare Grafi.19

20 Terminologia (5) Grafo aciclico: non contiene cicli In un grafo orientato una catena è una sequenza di archi con in comune la testa e la coda (non necessariamente consecutivi) v j1 v j2 v j3 v j4 v j5 Grafo connesso: v i, v j V cammino da v i a v j G non orientato: G non connesso costituito da componenti connesse separate Grafi.20

21 Cammini euleriani Un cammino o ciclo elementare è euleriano se visita tutti i lati Teorema di Eulero: G ammette un ciclo euleriano d(v) pari v V v 1 v 2 v 4 v 3 Grafi.21

22 Cammini hamiltoniani Un cammino o ciclo semplice è hamiltoniano se visita tutti i vertici del grafo Condizioni necessarie per l esistenza di un c. hamiltoniano G connesso con d(v) 2 v V e t.c. δ(s) 2 S V v 1 v 2 v 4 v 3 v 6 v 7 v 8 Grafi.22

23 Memorizzazione di grafi Grafi densi (m n 2 ) Non pesati matrice di adiacenza [a ij ] (n n) Pesati matrice dei pesi [c ij ] (n n) a ij = 1 se (v i, v j ) A ( E) 0 altrimenti c ij = c (v i,v j ) se (v i,v j ) A ( E) altrimenti [a ij ], [c ij ] simmetriche per grafi non orientati Grafi.23

24 Esempio v 1 10 v v 4 9 v 3 a ij = c ij = Grafi.24

25 Memorizzazione di grafi Grafi sparsi (m << n 2 ) Meglio memorizzare solo gli archi esistenti v 1 10 v 2 f ' = u' = v 4 9 v 3 c' = Grafi.25

26 Memorizzazione di grafi sparsi v 1 10 v 2 c' = u' = v 4 9 v 3 p' = f ' = Grafi.26

27 Memorizzazione di grafi sparsi Non pesati forward star vettore p(n+1) di puntatori: p 1 =1, p n+1 =m+1 Pesati forward star +vettore c(m) c k = peso dell arco individuato da u k vettore u(m): (u pi,.., u p(i+1) -1) indici vertici v : l arco (v i,v) Grafi.27

28 Foreste ed alberi Dato un grafo non orientato G=(V,E) Albero (tree): sottografo connesso aciclico G =(V,E ) v Foresta: i, v j V grafo in parziale G uno aciclico ed un solo G =(V,E ) cammino v 1 v 2 v 4 v 3 v 6 v 7 v 8 Grafi.28

29 Foreste ed alberi Foresta massimale: ogni arco in E \ E chiude un ciclo con E Albero ricoprente (Spanning Tree, ST ): foresta massimale connessa v 1 v 2 v 4 v 3 v 6 v 7 v 8 Grafi.29

30 Foreste ed alberi Albero ricoprente (Spanning Tree, ST ): foresta massimale connessa Grafo parziale connesso aciclico G =(V,E ) v i, v j V in G uno ed un solo cammino è connesso e contiene V -1= n -1 lati v 1 v 2 v 4 v 3 v 6 v 7 v 8 Grafi.30

31 Problema del più corto ST Shortest ST, SST Dato G=(V,E) pesato e connesso, trovare lo ST G =(V,E ) tale che il costo Σ e E c(e)sia minimo Applicazioni: combinare i terminali di un circuito elettrico con minima lunghezza di filo (per ridurre effetti parassiti) collegare città mediante condutture a costo minimo senza punti di giunzione esterni sottoproblema di altri problemi più complessi Grafi.31

32 Modello di PLI di SST c j = peso del lato e j x j = 1 se e j è nell albero 0 altrimenti min Σ j=1,m c j x j v 1 v 2 v 6 Σ j=1,m x j = n 1 x j {0,1} v 4 v 3 Σ j σ (S) x j S 1 S V, S Subtour elimination constraints: O(2 n ) Grafi.32

33 Teorema di Prim (1957) Dati G = (V,E) ed un albero parziale (W,E ), W V, E E, sia (u *,v * ) il più corto (u,v): u W, v V \W. Fra tutti gli ST di G che contengono E ne esiste uno ottimo che contiene anche (u *,v * ). W u * v * u v Se (W,E ) è ottimo, (W { v * }, E {(u *,v * )}) è ottimo Grafi.33

34 Dimostrazione Teorema di Prim Sia ST * il più corto ST contenente E, si supponga, per assurdo, che non contenga (u *,v * ). In ST * deve esistere un cammino tra u * e v *, che conterrà un lato (u,v), con u W, v V \W. Rimuovendo (u,v) due alberi parziali, aggiungendo (u *,v * ) ST più corto di ST * u * v * W u v Grafi.34

35 Algoritmo di Prim (I versione) parti con uno ST ottimo costituito dal vertice v 1 W := {v 1 }; E := ; finchè non si ha uno ST completo ( W = n ): determina(u *, v * ), lato a costo minimo che collega un vertice dello ST con un vertice non ancora raggiunto aggiungi il lato (u *, v * ) allo ST W := W { v * }; E := E { (u *, v * )} Grafi.35

36 Algoritmo di Prim (I versione) begin W := {v 1 }; E := ; while W < n do begin determina (u *, v * ) ; W := W { v * }; E := E { (u *, v * ) }; end end. n-1 iterazioni iterazione numero operazioni a E tempo O(n 3 ) Grafi.36

37 Algoritmo di Prim (I versione) (u *,v * ) = min {(u,v): u W, v V \W }. 9 v 1 v W = {v 1, v 2 } v* = v Basta verificare se v 3 è più vicino a v 4 o v 4 3 v 3 Grafi.37

38 Algoritmo di Prim (II versione) b(v) vertice di W più vicino a v V \ W Procedure SST_Prim begin W := {v 1 }; E := ; for each v V \{v 1 } do b(v):= v 1 ; while W <n do begin v * V \W: c(v *,b(v * )) = min v V\W {c(v, b(v)) }; W := W { v * }; E := E { (v *,b(v * )) }; for each v V \W do if c(v, v * ) < c(v,b(v)) then b(v):= v * ; end end. n-1 iterazioni iterazione numero operaz. a V \ W tempo O(n 2 ) Grafi.38

39 Esempio 9 v 1 v Procedure SST_Prim begin W := {v 1 }; E := ; comment b(v) = vertice W: c(v,b(v))=min r W {c(v,r) }; for each v V \{v 1 } do b(v):= v 1 ; while W <n do begin v * V \W: c(v *,b(v * )) = min v V\W {c(v, b(v)) }; W := W { v * }; E := E { (v *,b(v * )) }; for each v V \W do if c(v, v * ) < c(v,b(v)) then b(v):= v * ; end end. 2 4 v 4 3 v 3 Grafi.39

40 Inizializzazione insiemi v v Procedure SST_Prim begin W := {v 1 }; E := ; comment b(v) = vertice W: c(v,b(v))=min r W {c(v,r) }; for each v V \{v 1 } do b(v):= v 1 ; while W <n do begin v * V \W: c(v *,b(v * )) = min v V\W {c(v, b(v)) }; W := W { v * }; E := E { (v *,b(v * )) }; for each v V \W do if c(v, v * ) < c(v,b(v)) then b(v):= v * ; end end. 2 4 W = {v 1 } v 4 3 v 3 E = Grafi.40

41 Inizializzazione etichette 9 v 1 v 2 [v 1 ] [v 1 ] [v 1 ] v 4 v 3 [v 1 ] 3 Procedure SST_Prim begin W := {v 1 }; E := ; comment b(v) = vertice W: c(v,b(v))=min r W {c(v,r) }; for each v V \{v 1 } do b(v):= v 1 ; while W <n do begin v * V \W: c(v *,b(v * )) = min v V\W {c(v, b(v)) }; W := W { v * }; E := E { (v *,b(v * )) }; for each v V \W do if c(v, v * ) < c(v,b(v)) then b(v):= v * ; end end. W = {v 1 } E = Grafi.41

42 Selezione del vertice (1) 9 v 1 v 2 [v 1 ] [v 1 ] [v 1 ] v 4 v 3 [v 1 ] 3 Procedure SST_Prim begin W := {v 1 }; E := ; comment b(v) = vertice W: c(v,b(v))=min r W {c(v,r) }; for each v V \{v 1 } do b(v):= v 1 ; while W <n do begin v * V \W: c(v *,b(v * )) = min v V\W {c(v, b(v)) }; W := W { v * }; E := E { (v *,b(v * )) }; for each v V \W do if c(v, v * ) < c(v,b(v)) then b(v):= v * ; end end. W = {v 1 } E = Grafi.42

43 Aggiornamento insiemi (1) 9 v 1 v 2 [v 1 ] [v 1 ] [v 1 ] v 4 v 3 [v 1 ] 3 Procedure SST_Prim begin W := {v 1 }; E := ; comment b(v) = vertice W: c(v,b(v))=min r W {c(v,r) }; for each v V \{v 1 } do b(v):= v 1 ; while W <n do begin v * V \W: c(v *,b(v * )) = min v V\W {c(v, b(v)) }; W := W { v * }; E := E { (v *,b(v * )) }; for each v V \W do if c(v, v * ) < c(v,b(v)) then b(v):= v * ; end end. W = {v 1, } E = {(,v 1 )} Grafi.43

44 Aggiornamento etichette (1) v 1 9 v 2 [v 1 ] [ ] [v 1 ] [v 1 ] v 4 v 3 [v 1 ] [v 3 5 ] [ ] Procedure SST_Prim begin W := {v 1 }; E := ; comment b(v) = vertice W: c(v,b(v))=min r W {c(v,r) }; for each v V \{v 1 } do b(v):= v 1 ; while W <n do begin v * V \W: c(v *,b(v * )) = min v V\W {c(v, b(v)) }; W := W { v * }; E := E { (v *,b(v * )) }; for each v V \W do if c(v, v * ) < c(v,b(v)) then b(v):= v * ; end end. W = {v 1, } E = {(,v 1 )} Grafi.44

45 Selezione del vertice (2) 9 v 1 v 2 [ ] [ ] v 4 v 3 [ ] 3 Procedure SST_Prim begin W := {v 1 }; E := ; comment b(v) = vertice W: c(v,b(v))=min r W {c(v,r) }; for each v V \{v 1 } do b(v):= v 1 ; while W <n do begin v * V \W: c(v *,b(v * )) = min v V\W {c(v, b(v)) }; W := W { v * }; E := E { (v *,b(v * )) }; for each v V \W do if c(v, v * ) < c(v,b(v)) then b(v):= v * ; end end. W = {v 1, } E = {(,v 1 )} Grafi.45

46 Aggiornamento insiemi (2) 9 v 1 v 2 [ ] [ ] v 4 v 3 [ ] 3 Procedure SST_Prim begin W := {v 1 }; E := ; comment b(v) = vertice W: c(v,b(v))=min r W {c(v,r) }; for each v V \{v 1 } do b(v):= v 1 ; while W <n do begin v * V \W: c(v *,b(v * )) = min v V\W {c(v, b(v)) }; W := W { v * }; E := E { (v *,b(v * )) }; for each v V \W do if c(v, v * ) < c(v,b(v)) then b(v):= v * ; end end. W = {v 1,,v 4 } E = {(,v 1 ), (v 4, )} Grafi.46

47 Aggiornamento etichette (2) 9 v 1 v 2 [ ] Procedure SST_Prim begin W := {v 1 }; E := ; comment b(v) = vertice W: c(v,b(v))=min r W {c(v,r) }; for each v V \{v 1 } do b(v):= v 1 ; while W <n do begin v * V \W: c(v *,b(v * )) = min v V\W {c(v, b(v)) }; W := W { v * }; E := E { (v *,b(v * )) }; for each v V \W do if c(v, v * ) < c(v,b(v)) then b(v):= v * ; end end. v v 3 [v 4 ] W = {v 1,,v 4 } E = {(,v 1 ), (v 4, )} Grafi.47

48 Selezione del vertice (3) 9 v 1 v 2 [ ] Procedure SST_Prim begin W := {v 1 }; E := ; comment b(v) = vertice W: c(v,b(v))=min r W {c(v,r) }; for each v V \{v 1 } do b(v):= v 1 ; while W <n do begin v * V \W: c(v *,b(v * )) = min v V\W {c(v, b(v)) }; W := W { v * }; E := E { (v *,b(v * )) }; for each v V \W do if c(v, v * ) < c(v,b(v)) then b(v):= v * ; end end. v v 3 [v 4 ] W = {v 1,,v 4 } E = {(,v 1 ), (v 4, )} Grafi.48

49 Aggiornamento insiemi (3) 9 v 1 v 2 [ ] Procedure SST_Prim begin W := {v 1 }; E := ; comment b(v) = vertice W: c(v,b(v))=min r W {c(v,r) }; for each v V \{v 1 } do b(v):= v 1 ; while W <n do begin v * V \W: c(v *,b(v * )) = min v V\W {c(v, b(v)) }; W := W { v * }; E := E { (v *,b(v * )) }; for each v V \W do if c(v, v * ) < c(v,b(v)) then b(v):= v * ; end end. v v 3 [ ] W = {v 1,,v 4,v 3 } E = {(,v 1 ), (v 4, ), (v 3,v 4 )} Grafi.49

50 Aggiornamento etichette (3) 9 v 1 v 2 [ ] Procedure SST_Prim begin W := {v 1 }; E := ; comment b(v) = vertice W: c(v,b(v))=min r W {c(v,r) }; for each v V \{v 1 } do b(v):= v 1 ; while W <n do begin v * V \W: c(v *,b(v * )) = min v V\W {c(v, b(v)) }; W := W { v * }; E := E { (v *,b(v * )) }; for each v V \W do if c(v, v * ) < c(v,b(v)) then b(v):= v * ; end end. v v 3 W = {v 1,,v 4,v 3 } E = {(,v 1 ), (v 4, ), (v 3,v 4 )} Grafi.50

51 Selezione del vertice (4) v v [ ] Procedure SST_Prim begin W := {v 1 }; E := ; comment b(v) = vertice W: c(v,b(v))=min r W {c(v,r) }; for each v V \{v 1 } do b(v):= v 1 ; while W <n do begin v * V \W: c(v *,b(v * )) = min v V\W {c(v, b(v)) }; W := W { v * }; E := E { (v *,b(v * )) }; for each v V \W do if c(v, v * ) < c(v,b(v)) then b(v):= v * ; end end. 2 4 W = {v 1,,v 4,v 3 } v 4 3 v 3 E = {(,v 1 ), (v 4, ), (v 3,v 4 )} Grafi.51

52 Aggiornamento insiemi (4) v v [ ] Procedure SST_Prim begin W := {v 1 }; E := ; comment b(v) = vertice W: c(v,b(v))=min r W {c(v,r) }; for each v V \{v 1 } do b(v):= v 1 ; while W <n do begin v * V \W: c(v *,b(v * )) = min v V\W {c(v, b(v)) }; W := W { v * }; E := E { (v *,b(v * )) }; for each v V \W do if c(v, v * ) < c(v,b(v)) then b(v):= v * ; end end. 2 4 W = {v 1,,v 4,v 3,v 2 } v 4 3 v 3 E = {(,v 1 ), (v 4, ), (v 3,v 4 ), (v 2, )} Grafi.52

53 Soluzione v v 2 Procedure SST_Prim begin W := {v 1 }; E := ; comment b(v) = vertice W: c(v,b(v))=min r W {c(v,r) }; for each v V \{v 1 } do b(v):= v 1 ; while W <n do begin v * V \W: c(v *,b(v * )) = min v V\W {c(v, b(v)) }; W := W { v * }; E := E { (v *,b(v * )) }; for each v V \W do if c(v, v * ) < c(v,b(v)) then b(v):= v * ; end end. v v 3 W = {v 1,,v 4,v 3,v 2 } E = {(,v 1 ), (v 4, ), (v 3,v 4 ), (v 2, )} costo: 19 Grafi.53

54 Esempio 3 v 1 v v 3 v v 1 v 2 v 3 v 4 b(v)..... c(v, b(v))..... Grafi.54

55 Iterazione 1 v 1 3 v 2 W = { 1 } v 3 v v 1 v 2 v 3 v 4 b(v) c(v, b(v)) Grafi.55

56 Iterazione 2 3 W = { 1, 2 } v 1 v 2 v 1 v 2 v 3 v v 3 v b(v) c(v, b(v)) v 1 v 2 v 3 v 4 b(v) c(v, b(v)) Grafi.56

57 Iterazione 3 3 W = { 1, 2, 3 } v 1 v 2 v 1 v 2 v 3 v v 3 v b(v) c(v, b(v)) v 1 v 2 v 3 v 4 b(v) c(v, b(v)) Grafi.57

58 Iterazione v 1 v v 3 v W = { 1, 2, 3, 5 } v 1 v 2 v 3 v 4 b(v) c(v, b(v)) v 1 v 2 v 3 v 4 b(v) c(v, b(v)) Grafi.58

59 Iterazione v 1 v v 3 v W = { 1, 2, 3, 5, 4 } v 1 v 2 v 3 v 4 b(v) c(v, b(v)) Costo = 10 Grafi.59

60 Algoritmo di Kruskal (1956) ordina E per costi non decrescenti; inizializza una soluzione vuota (E := ; ) finchè non si ha uno ST completo ( E = n - 1): considera il prossimo lato (e j ) nell ordine se e j assieme agli archi di E non chiude un circuito allora inseriscilo in soluzione (E := E { e j }) altrimenti scartalo Grafi.60

61 Algoritmo di Kruskal (1956) Algoritmo di tipo greedy (le scelte sono basate su un criterio locale e non sono riconsiderate successivamente) begin E := ; ordina E per costi non decrescenti; repeat individua il lato (e j ) di costo minimo; E := E \ { e j }; if E { e j } non ha circuiti then E := E { e j }; until E = n - 1; end. Complessità: O(m log m) Grafi.61

62 Esempio 5 3 v 1 v v 3 v e j c(e j ) (v 3, ) 1 (v 4, ) 1 (v 1,v 2 ) 3 (v 1,v 3 ) 5 (v 2, ) 7 (v 3,v 4 ) 9 (v 1,v 4 ) 10 (v 2,v 4 ) 13 Grafi.62

63 Iterazione v 1 v v 3 v e j c(e j ) (v 3, ) 1 (v 4, ) 1 (v 1,v 2 ) 3 (v 1,v 3 ) 5 (v 2, ) 7 (v 3,v 4 ) 9 (v 1,v 4 ) 10 (v 2,v 4 ) 13 (v 3, ) 1 Grafi.63

64 Iterazione v 1 v v 3 v e j c(e j ) (v 4, ) 1 (v 1,v 2 ) 3 (v 1,v 3 ) 5 (v 2, ) 7 (v 3,v 4 ) 9 (v 1,v 4 ) 10 (v 2,v 4 ) 13 (v 3, ) (v 4, ) 2 Grafi.64

65 Iterazione v 1 v v 3 v e j c(e j ) (v 1,v 2 ) 3 (v 1,v 3 ) 5 (v 2, ) 7 (v 3,v 4 ) 9 (v 1,v 4 ) 10 (v 2,v 4 ) 13 (v 3, ) (v 4, ) (v 1,v 2 ) 3 Grafi.65

66 Iterazione v 1 v v 3 v e j c(e j ) (v 1,v 3 ) 5 (v 2, ) 7 (v 3,v 4 ) 9 (v 1,v 4 ) 10 (v 2,v 4 ) 13 (v 3, ) (v 4, ) (v 1,v 2 ) (v 1,v 3 ) n-1 Costo = 10 Grafi.66

67 Esempio: variante 9 3 v 1 v v 3 v e j c(e j ) (v 3, ) 1 (v 4, ) 1 (v 1,v 2 ) 3 (v 3,v 4 ) 5 (v 2, ) 7 (v 1,v 3 ) 9 (v 1,v 4 ) 10 (v 2,v 4 ) 13 Grafi.67

68 Iterazione v 1 v v 3 v e j c(e j ) (v 3, ) 1 (v 4, ) 1 (v 1,v 2 ) 3 (v 3,v 4 ) 5 (v 2, ) 7 (v 1,v 3 ) 9 (v 1,v 4 ) 10 (v 2,v 4 ) 13 (v 3, ) 1 Grafi.68

69 Iterazione v 1 v v 3 v e j c(e j ) (v 4, ) 1 (v 1,v 2 ) 3 (v 3,v 4 ) 5 (v 2, ) 7 (v 1,v 3 ) 9 (v 1,v 4 ) 10 (v 2,v 4 ) 13 (v 3, ) (v 4, ) 2 Grafi.69

70 Iterazione v 1 v v 3 v e j c(e j ) (v 1,v 2 ) 3 (v 3,v 4 ) 5 (v 2, ) 7 (v 1,v 3 ) 9 (v 1,v 4 ) 10 (v 2,v 4 ) 13 (v 3, ) (v 4, ) (v 1,v 2 ) 3 Grafi.70

71 Iterazione v 1 v v 3 v e j c(e j ) (v 3,v 4 ) 5 (v 2, ) 7 (v 1,v 3 ) 9 (v 1,v 4 ) 10 (v 2,v 4 ) 13 (v 3, ) (v 4, ) (v 1,v 2 ) (v 3,v 4 )NO Grafi.71

72 Iterazione v 1 v e j c(e j ) (v 3, ) (v 4, ) (v 1,v 2 ) 5 v 3 v (v 2, ) 7 (v 1,v 3 ) 9 (v 1,v 4 ) 10 (v 2,v 4 ) 13 (v 2, ) n-1 Costo = 12 Grafi.72

73 Confronto Prim-Kruskal Complessità Prim: O(n 2 ) Kruskal : O(m log m) Per grafi densi m n 2 meglio Prim O(n 2 ) < O(n 2 log n) Per grafi sparsi m << n 2 meglio Kruskal O(n log n) < O(n 2 ) Grafi.73

74 Cammini Ricerca di cammini su grafo: verifica esistenza di un percorso da un vertice ad un altro (uscita da un labirinto) ricerca del percorso (di costo minimo) tra due località in un grafo (pesato) rappresentante una rete stradale Considereremo grafi orientati: maggiore generalità (gli algoritmi presentati si adattano anche ai grafi non orientati) Grafi.74

75 Esempio s t Grafi.75

76 Esempio s t Grafi.76

77 Raggiungibilità Dato un grafo orientato G=(V,A) determinare l insieme R dei vertici raggiungibili da un vertice s assegnato s v 1 v 2 R={v 1,v 2,v 4, } v 4 v 3 Grafi.77

78 Raggiungibilità Strutture dati R insieme dei vertici raggiungibili da s pred( j) = vertice che precede j in un cammino da s a j si noti che R= { j : pred( j ) 0} Q = insieme dei vertici raggiungibili da s e non ancora elaborati Grafi.78

79 Algoritmo CAMMINI parti dal vertice s e marca tutti i vertici come non raggiunti pred( j ) := 0 (j=1,, n); R := ; poni Q := { s } (insieme dei vertici raggiunti e non esaminati) per ogni vertice h di Q : marca come raggiunti tutti i vertici j collegati ad h ( j Γ + (h) ) e non raggiunti (pred( j) = 0) inserisci tali vertici in Q Grafi.79

80 Algoritmo CAMMINI begin for j:=1 to n do pred( j) := 0; pred(s) := s; Q := { s }; R := ; while Q do { vertice raggiungibile h Q } scegli vertice h Q; Q := Q \ { h }; for each j Γ + (h) do if pred( j) = 0 then pred( j) := h; Q := Q { j }; R := R { j }; end end. Complessità: O(m) Grafi.80

81 Esempio s v 1 v 2 procedure CAMMINI begin for j:=1 to n do pred( j) := 0; pred(s) := s; Q := { s }; R := ; while Q do scegli vertice h Q; Q := Q \ { h }; for each j Γ + (h) do if pred( j) = 0 then pred( j) := h; Q := Q { j }; R := R { j }; end end. v 4 v 3 Grafi.81

82 Inizializzazione etichette [0] [0] v 1 v 2 procedure CAMMINI begin for j:=1 to n do pred( j) := 0; pred(s) := s; Q := { s }; R := ; while Q do scegli vertice h Q; Q := Q \ { h }; for each j Γ + (h) do if pred( j) = 0 then pred( j) := h; Q := Q { j }; R := R { j }; end end. [0] v 4 [0] v 3 [0] Grafi.82

83 Inizializzazione insiemi [1] [0] v 1 v 2 procedure CAMMINI begin for j:=1 to n do pred( j) := 0; pred(s) := s; Q := { s }; R := ; while Q do scegli vertice h Q; Q := Q \ { h }; for each j Γ + (h) do if pred( j) = 0 then pred( j) := h; Q := Q { j }; R := R { j }; end end. [0] v 4 [0] v 3 [0] Q = { v 1 } R = Grafi.83

84 Selezione vertice (1) [1] [0] v 1 v 2 procedure CAMMINI begin for j:=1 to n do pred( j) := 0; pred(s) := s; Q := { s }; R := ; while Q do scegli vertice h Q; Q := Q \ { h }; for each j Γ + (h) do if pred( j) = 0 then pred( j) := h; Q := Q { j }; R := R { j }; end end. [0] v 4 [0] v 3 [0] Q = R = Γ + (v 1 ) = { v 2, v 4 } Grafi.84

85 Aggiornamento (1) [1] [1] v 1 v 2 procedure CAMMINI begin for j:=1 to n do pred( j) := 0; pred(s) := s; Q := { s }; R := ; while Q do scegli vertice h Q; Q := Q \ { h }; for each j Γ + (h) do if pred( j) = 0 then pred( j) := h; Q := Q { j }; R := R { j }; end end. [0] v 4 [1] v 3 [0] Q = { v 2, v 4 } R = { v 2, v 4 } Γ + (v 1 ) = { v 2, v 4 } Grafi.85

86 Selezione vertice (2) [1] [1] v 1 v 2 procedure CAMMINI begin for j:=1 to n do pred( j) := 0; pred(s) := s; Q := { s }; R := ; while Q do scegli vertice h Q; Q := Q \ { h }; for each j Γ + (h) do if pred( j) = 0 then pred( j) := h; Q := Q { j }; R := R { j }; end end. [0] v 4 [1] v 3 [0] Q = { v 4 } R = { v 2, v 4 } Γ + (v 2 ) = { } Grafi.86

87 Aggiornamento (2) [1] [1] v 1 v 2 procedure CAMMINI begin for j:=1 to n do pred( j) := 0; pred(s) := s; Q := { s }; R := ; while Q do scegli vertice h Q; Q := Q \ { h }; for each j Γ + (h) do if pred( j) = 0 then pred( j) := h; Q := Q { j }; R := R { j }; end end. [2] v 4 [1] v 3 [0] Q = { v 4, } R = { v 2, v 4, } Γ + (v 2 ) = { } Grafi.87

88 Selezione vertice (3) [1] [1] v 1 v 2 procedure CAMMINI begin for j:=1 to n do pred( j) := 0; pred(s) := s; Q := { s }; R := ; while Q do scegli vertice h Q; Q := Q \ { h }; for each j Γ + (h) do if pred( j) = 0 then pred( j) := h; Q := Q { j }; R := R { j }; end end. [2] v 4 [1] v 3 [0] Q = { } R = { v 2, v 4, } Γ + (v 4 ) = { v 1 } Grafi.88

89 Selezione vertice (4) [1] [1] v 1 v 2 procedure CAMMINI begin for j:=1 to n do pred( j) := 0; pred(s) := s; Q := { s }; R := ; while Q do scegli vertice h Q; Q := Q \ { h }; for each j Γ + (h) do if pred( j) = 0 then pred( j) := h; Q := Q { j }; R := R { j }; end end. [2] v 4 [1] v 3 [0] Q = R = { v 2, v 4, } Γ + ( ) = { v 1, v 4 } Grafi.89

90 Soluzione [1] [1] v 1 v 2 [2] s = v 1 R = { v 2, v 4, } v v 2 1 v 3 non raggiunto v 4 v 1 v 2 v 1 v 4 [1] v 3 [0] Grafi.90

91 Problema del cammino minimo Shortest Path Problem, SPP Dato un grafo orientato G=(V,A), pesato sugli archi con costi c ij, e due vertici s,t V, determinare il cammino semplice di costo minimo dal vertice s al vertice t v 2 s t v 3 Grafi.91

92 Complessità SPP Th.: Se i costi degli archi sono qualsiasi, SPP è NP-hard Dim.: Un cammino semplice da un vertice a se stesso ha al più n archi e se ne ha esattamente n è un circuito hamiltoniano Determinare se G=(V,A) possiede un circuito hamiltoniano è NP-completo Dato un grafo G=(V,A) definendo c ij = 1 per ogni (i,j) A, se il cammino semplice di costo minimo da un qualunque vertice v a se stesso ha costo -n, tale cammino è un circuito hamiltoniano Grafi.92

93 Casi particolari Esistono casi in cui il problema è polinomiale c ij 0 per ogni (i, j) A Algoritmo di Dijkstra complessità O(n 2 ) O(n log n) c ij qualsiasi per ogni (i, j) A, ma non esistono circuiti in G di costo negativo Algoritmo di Floyd-Warshall complessità O(n 3 ) Grafi.93

94 Proprietà SP (1) Se i costi possono essere negativi il cammino minimo non è necessariamente semplice ed elementare Se esiste un circuito a costo negativo il cammino minimo lo percorre infinite volte 1 v 2 6 v v 4 v 3 Grafi.94

95 Proprietà SP (2) Se i costi degli archi sono non negativi il cammino di costo minimo è semplice ed elementare s 1 v t 2 1 v 4 v 3 Grafi.95

96 Concatenazione cammini Propr.: Se il cammino minimo da v i a v k passa per v j, allora esso è formato dal cammino minimo da v i a v j concatenato al cammino minimo da v j a v k Dim.: Se esistesse un cammino più breve da v i a v j (o da v j a v k ) esso verrebbe usato anche nel cammino minimo da v i a v k Grafi.96

97 Modello PLI di SPP min Σ (i,j): Α c ij x ij Costo cammino N. archi uscenti N. archi entranti Σ (h,j): Γ + (h) x hj Σ (i,h): Γ - (h) x ih = 1 se h = s 1 se h = t 0 se h V \{s,t} N. archi in S Σ (i,j):i,j S x ij S 1 S V, S 0 x ij 1 intero (i, j) A Grafi.97

98 Vincoli subtour elimination v 1 v 2 v 9 v 8 v 4 v 3 v 7 v 6 Σ (i,j):i,j S x ij S 1 S V, S Se c ij 0 il cammino minimo è semplice ridondanti Grafi.98

99 Algoritmo di Dijkstra (1959) Strutture dati W = L(v) = insieme dei vertici raggiunti in modo permanente da s costo del cammino minimo da s a v passante solo per j W pred(v) = vertice che precede v nel cammino da s a v Grafi.99

100 Procedure DIJKSTRA begin W := { s }; L(s) := 0; pred(s) := 0; for each v V \{ s } do L(v) := c(s,v); pred(v) := s; while W <n do trova v * V \W : L(v * ) = min v V\W { L(v) }; W := W {v * }; for each v V \W do if L(v * ) + c(v *, v) < L(v) then L(v) := L(v * ) + c(v *, v); pred(v) := v * ; end end. n-1 iterazioni iterazione numero operaz. a V \ W tempo O(n 2 ) Grafi.100

101 Teorema Se L(v * ) = min v V\W { L(v) } il cammino minimo da s a v * è lungo L(v * ) Dimostrazione Dimostriamo che qualunque cammino P da s a v * è lungo almeno L(v * ): Se P passa solo per vertici di W, vero per definizione di L( ); altrimenti sia h il primo vertice W che si incontra in P P cammino da s a h (lungo almeno L(h) L(v * ) ) + cammino da h a v * di lunghezza 0 Dimostrazione non valida se ci sono distanze negative Grafi.101

102 Esempio s 7 v 1 v procedure DIJKSTRA begin W := { s }; L(s) := 0; pred(s) := 0; for each v V \{ s } do L(v) := c(s,v); pred(v) := s; while W <n do trova v * V \W : L(v * ) = min v V\W { L(v) }; W := W {v * }; for each v V \W do if L(v * ) + c(v *, v) < L(v) then L(v) := L(v * ) + c(v *, v); pred(v) := v * ; end end. 1 9 v 4 7 v 3 Grafi.102

103 Inizializzazione [0,0] 7 v 1 v procedure DIJKSTRA begin W := { s }; L(s) := 0; pred(s) := 0; for each v V \{ s } do L(v) := c(s,v); pred(v) := s; while W <n do trova v * V \W : L(v * ) = min v V\W { L(v) }; W := W {v * }; for each v V \W do if L(v * ) + c(v *, v) < L(v) then L(v) := L(v * ) + c(v *, v); pred(v) := v * ; end end. 1 9 W = {v 1 } v 4 7 v 3 Grafi.103

104 Inizializzazione etichette [7,v 1 ] 7 v 1 v [3,v 1 ] 9 1 procedure DIJKSTRA begin W := { s }; L(s) := 0; pred(s) := 0; for each v V \{ s } do L(v) := c(s,v); pred(v) := s; while W <n do trova v * V \W : L(v * ) = min v V\W { L(v) }; W := W {v * }; for each v V \W do if L(v * ) + c(v *, v) < L(v) then L(v) := L(v * ) + c(v *, v); pred(v) := v * ; end end. W = {v 1 } v 4 [4,v 1 ] 7 v 3 [,v 1 ] Grafi.104

105 Selezione vertice (1) [7,v 1 ] 7 v 1 v [3,v 1 ] 9 1 procedure DIJKSTRA begin W := { s }; L(s) := 0; pred(s) := 0; for each v V \{ s } do L(v) := c(s,v); pred(v) := s; while W <n do trova v * V \W : L(v * ) = min v V\W { L(v) }; W := W {v * }; for each v V \W do if L(v * ) + c(v *, v) < L(v) then L(v) := L(v * ) + c(v *, v); pred(v) := v * ; end end. W = {v 1, } v 4 [4,v 1 ] 7 v 3 [,v 1 ] Grafi.105

106 Aggiornamento etichette (1) [5, ] [7,v 1 ] 7 v 1 v [3,v 1 ] 9 1 procedure DIJKSTRA begin W := { s }; L(s) := 0; pred(s) := 0; for each v V \{ s } do L(v) := c(s,v); pred(v) := s; while W <n do trova v * V \W : L(v * ) = min v V\W { L(v) }; W := W {v * }; for each v V \W do if L(v * ) + c(v *, v) < L(v) then L(v) := L(v * ) + c(v *, v); pred(v) := v * ; end end. W = {v 1, } v 4 [4,v 1 ] 7 v 3 [,v 1 ] [12, ] Grafi.106

107 Selezione vertice (2) [5, ] 7 v 1 v procedure DIJKSTRA begin W := { s }; L(s) := 0; pred(s) := 0; for each v V \{ s } do L(v) := c(s,v); pred(v) := s; while W <n do trova v * V \W : L(v * ) = min v V\W { L(v) }; W := W {v * }; for each v V \W do if L(v * ) + c(v *, v) < L(v) then L(v) := L(v * ) + c(v *, v); pred(v) := v * ; end end. 1 9 W = {v 1,,v 4 } v 4 [4,v 1 ] 7 v 3 [12, ] Grafi.107

108 Aggiornamento etichette (2) [5, ] 7 v 1 v procedure DIJKSTRA begin W := { s }; L(s) := 0; pred(s) := 0; for each v V \{ s } do L(v) := c(s,v); pred(v) := s; while W <n do trova v * V \W : L(v * ) = min v V\W { L(v) }; W := W {v * }; for each v V \W do if L(v * ) + c(v *, v) < L(v) then L(v) := L(v * ) + c(v *, v); pred(v) := v * ; end end. 1 9 W = { v 1,,v 4 } v 4 7 v 3 [11,v 4 ] Grafi.108

109 Selezione vertice (3) [5, ] 7 v 1 v procedure DIJKSTRA begin W := { s }; L(s) := 0; pred(s) := 0; for each v V \{ s } do L(v) := c(s,v); pred(v) := s; while W <n do trova v * V \W : L(v * ) = min v V\W { L(v) }; W := W {v * }; for each v V \W do if L(v * ) + c(v *, v) < L(v) then L(v) := L(v * ) + c(v *, v); pred(v) := v * ; end end. 1 9 W = {v 1,,v 4,v 2 } v 4 7 v 3 [11,v 4 ] Grafi.109

110 Aggiornamento etichette (3) 7 v 1 v procedure DIJKSTRA begin W := { s }; L(s) := 0; pred(s) := 0; for each v V \{ s } do L(v) := c(s,v); pred(v) := s; while W <n do trova v * V \W : L(v * ) = min v V\W { L(v) }; W := W {v * }; for each v V \W do if L(v * ) + c(v *, v) < L(v) then L(v) := L(v * ) + c(v *, v); pred(v) := v * ; end end. 1 9 W = {v 1,,v 4,v 2 } v 4 7 v 3 [11,v 4 ] Grafi.110

111 Selezione vertice (4) 7 v 1 v procedure DIJKSTRA begin W := { s }; L(s) := 0; pred(s) := 0; for each v V \{ s } do L(v) := c(s,v); pred(v) := s; while W <n do trova v * V \W : L(v * ) = min v V\W { L(v) }; W := W {v * }; for each v V \W do if L(v * ) + c(v *, v) < L(v) then L(v) := L(v * ) + c(v *, v); pred(v) := v * ; end end. 1 9 W = {v 1,,v 4,v 2,v 1 } v 4 7 v 3 [11,v 4 ] Grafi.111

112 Soluzione [0,0] v [3,v 1 ] 9 1 [5, ] v 2 v L(v) pred(v) v v 2 5 v 3 11 v 4 v 4 4 v 1 3 v 1 v 4 [4,v 1 ] 7 v 3 [11,v4] Grafi.112

113 Esempio s 8 v 1 v W L(v) {1} (0, 8,, 5, 4) {1, 5} (0, 7, 10, 5, 4) {1, 5, 4} (0, 7, 9, 5, 4) {1, 5, 4, 2} (0, 7, 8, 5, 4) {1, 5, 4, 2, 3} (0, 7, 8, 5, 4) v 4 4 v 3 Grafi.113

Teoria dei Grafi Parte I

Teoria dei Grafi Parte I Teoria dei Grafi Parte I Daniele Vigo D.E.I.S. - Università di Bologna dvigo@deis.unibo.it Teoria dei Grafi Paradigma di rappresentazione di problemi Grafo G : coppia (V,E) V = insieme di vertici E = insieme

Dettagli

Il Problema dell Albero Ricoprente Minimo (Shortest Spanning Tree - SST)

Il Problema dell Albero Ricoprente Minimo (Shortest Spanning Tree - SST) Il Problema dell Albero Ricoprente Minimo (Shortest Spanning Tree - SST) È dato un grafo non orientato G=(V,E). Ad ogni arco e i E, i=1,,m, è associato un costo c i 0 7 14 4 10 9 11 8 12 6 13 5 17 3 2

Dettagli

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 2 OTTIMIZZAZIONE SU GRAFI E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 Molti problemi decisionali possono essere formulati utilizzando il linguaggio della teoria dei grafi. Esempi: - problemi di

Dettagli

1 TEORIA DELLE RETI 1. 1 Teoria delle reti. 1.1 Grafi

1 TEORIA DELLE RETI 1. 1 Teoria delle reti. 1.1 Grafi 1 TEORIA DELLE RETI 1 1 Teoria delle reti 1.1 Grafi Intuitivamente un grafo è un insieme finito di punti (nodi o vertici) ed un insieme di frecce (archi) che uniscono coppie di punti Il verso della freccia

Dettagli

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

2 OTTIMIZZAZIONE SU GRAFI. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 2 OTTIMIZZAZIONE SU GRAFI E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 Molti problemi decisionali possono essere formulati utilizzando il linguaggio della teoria dei grafi. Esempi: - problemi di

Dettagli

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1 . Cammini ottimi E. Amaldi Fondamenti di R.O. Politecnico di Milano .. Cammini minimi e algoritmo di Dijkstra Dato un grafo orientato G = (N, A) con una funzione di costo c : A c ij R e due nodi s e t,

Dettagli

Università Roma Tre - PAS Classe A048 "Matematica Applicata" - Corso di Informatica a.a. 2013/2014

Università Roma Tre - PAS Classe A048 Matematica Applicata - Corso di Informatica a.a. 2013/2014 Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A08 Matematica Applicata Corso di Informatica Algoritmi su Grafi Marco Liverani (liverani@mat.uniroma.it) Sommario

Dettagli

2.2 Alberi di supporto di costo ottimo

2.2 Alberi di supporto di costo ottimo . Alberi di supporto di costo ottimo Problemi relativi ad alberi hanno numerose applicazioni: progettazione di reti (comunicazione, teleriscaldamento,...) memorizzazione compatta di sequenze (DNA) diffusione

Dettagli

2.2 Alberi di supporto di costo ottimo

2.2 Alberi di supporto di costo ottimo . Alberi di supporto di costo ottimo Problemi relativi ad alberi hanno numerose applicazioni: progettazione di reti (comunicazione, teleriscaldamento,...) memorizzazione compatta di sequenze (DNA) diffusione

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 7 Grafi e alberi: introduzione

Appunti del corso di Informatica 1 (IN110 Fondamenti) 7 Grafi e alberi: introduzione Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica (IN0 Fondamenti) Grafi e alberi: introduzione Marco Liverani (liverani@mat.uniroma.it)

Dettagli

2.2 Alberi di supporto di costo ottimo

2.2 Alberi di supporto di costo ottimo . Alberi di supporto di costo ottimo Problemi relativi ad alberi hanno numerose applicazioni: progettazione di reti (comunicazione, teleriscaldamento,...) diffusione di messaggi segreti memorizzazione

Dettagli

Algoritmi & Laboratorio

Algoritmi & Laboratorio Acknowledgement Lucidi da F. Damiani, a.a. 2004-2005 C. Demetrescu et al, Algoritmi e strutture dati, McGraw-Hill M. Zacchi, a.a. 2003-2004 I lucidi non sono un sostituto per il libro di testo non contengono

Dettagli

Teoria dei Grafi Concetti fondamentali

Teoria dei Grafi Concetti fondamentali Teoria dei Grafi Concetti fondamentali I grafi sono un mezzo per rappresentare relazioni binarie. Ad esempio: due città connesse da una strada due calcolatori connessi in una rete telematica due persone

Dettagli

Cammini Minimi. Algoritmo di Dijkstra. Cammino in un grafo

Cammini Minimi. Algoritmo di Dijkstra. Cammino in un grafo Cammini Minimi Algoritmo di Dijkstra Cammino in un grafo Dato un grafo G=(V,E), un Cammino (Percorso) in G è un insieme di vertici v 1, v 2,.., v k tali che (v i, v i+1 ) E v 1 v 2 v 3 v k In un grafo

Dettagli

Alberi e arborescenze di costo minimo

Alberi e arborescenze di costo minimo Alberi e arborescenze di costo minimo Complementi di Ricerca Operativa Giovanni Righini Dipartimento di Tecnologie dell Informazione - Università degli Studi di Milano Definizioni - 1 Un grafo G = (V,

Dettagli

Cammini Minimi. Algoritmo di Dijkstra

Cammini Minimi. Algoritmo di Dijkstra Cammini Minimi Algoritmo di Dijkstra Cammino in un grafo Dato un grafo G=(V,E), un Cammino (Percorso) in G è un insieme di vertici v 1, v 2,.., v k tali che (v i, v i+1 ) E v 1 v 2 v 3 v k In un grafo

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Minimo albero ricoprente Fabio Patrizi 1 Albero ricoprente Sia G=(V,E) un grafo non orientato e connesso. Un albero ricoprente di G è un sottografo T G tale che: T è un albero;

Dettagli

Lezioni di Ricerca Operativa

Lezioni di Ricerca Operativa Lezioni di Ricerca Operativa Estratto per la parte di programmazione lineare e ottimizzazione sui grafi Corso di Metodi di Ottimizzazione per l'ingegneria della Sicurezza Laurea Magistrale in Ingegneria

Dettagli

2.2 Alberi di supporto di costo ottimo

2.2 Alberi di supporto di costo ottimo . Alberi di supporto di costo ottimo Problemi relativi ad alberi hanno numerose applicazioni: progettazione di reti (comunicazione, teleriscaldamento,...) protocolli reti IP memorizzazione compatta di

Dettagli

Introduzione ai grafi

Introduzione ai grafi TFA A048 Anno Accademico 2012-13 Outline Cenni storici sui grafi Nozioni introduttive: cammini, connessione, alberi, cicli Cammini di costo minimo Origini storiche La nascita della teoria dei grafi risale

Dettagli

Richiami di Teoria dei Grafi. Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena

Richiami di Teoria dei Grafi. Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena Richiami di Teoria dei Grafi Paolo Detti Dipartimento di Ingegneria dell Informazione Università di Siena Teoria dei grafi La Teoria dei Grafi costituisce, al pari della Programmazione Matematica, un corpo

Dettagli

Algoritmi & Laboratorio

Algoritmi & Laboratorio lbero ricoprente sia dato un grafo connesso e non orientato un albero ricoprente è un sottografo che contiene tutti nodi è aciclico è connesso cknowledgement Lucidi da. Damiani, a.a. 00-00. Demetrescu

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Minimo albero ricoprente Domenico Fabio Savo 1 Albero ricoprente Sia G=(V,E) un grafo non orientato e connesso. Un albero ricoprente di G è un sottografo T G tale che: T è un

Dettagli

Soluzioni della settima esercitazione di Algoritmi 1

Soluzioni della settima esercitazione di Algoritmi 1 Soluzioni della settima esercitazione di Algoritmi 1 Beniamino Accattoli 19 dicembre 2007 1 Grafi Un grafo è non orientato se descrivendo un arco come una coppia di vertici (i,j) l ordine è ininfluente

Dettagli

Note per la Lezione 21 Ugo Vaccaro

Note per la Lezione 21 Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 20 20 Note per la Lezione 2 Ugo Vaccaro In questa lezione introdurremo il concetto di grafo, esamineremo le loro più comuni rappresentazioni ed introdurremo i

Dettagli

Algoritmi e Strutture Dati. Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal

Algoritmi e Strutture Dati. Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Algoritmi e Strutture Dati Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Progettare una rete stradale Supponiamo di dover progettare una rete stradale in cui il costo di costruzione di un

Dettagli

Problema del cammino minimo

Problema del cammino minimo Algoritmi e Strutture di Dati II Problema del cammino minimo Un viaggiatore vuole trovare la via più corta per andare da una città ad un altra. Possiamo rappresentare ogni città con un nodo e ogni collegamento

Dettagli

Ottimizzazione Combinatoria Proprietà dei Grafi. Ottimizzazione Combinatoria

Ottimizzazione Combinatoria Proprietà dei Grafi. Ottimizzazione Combinatoria Ottimizzazione Combinatoria Ottimizzazione Combinatoria Proprietà dei Grafi ANTONIO SASSANO Università di Roma La Sapienza Dipartimento di Informatica e Sistemistica Corso di Laurea in Ingegneria Gestionale

Dettagli

Grafi diretti. Un grafo diretto (o grafo orientato) G è una coppia (V,E) dove. V è u n i n s i e m e d i nodi (o vertici);

Grafi diretti. Un grafo diretto (o grafo orientato) G è una coppia (V,E) dove. V è u n i n s i e m e d i nodi (o vertici); Algoritmi e Strutture di Dati II 2 Grafi diretti Un grafo diretto (o grafo orientato) G è una coppia (V,E) dove V è u n i n s i e m e d i nodi (o vertici); E µ V V è u n i n s i e m e d i archi. Denotiamo

Dettagli

Grafi (non orientati e connessi): minimo albero ricoprente

Grafi (non orientati e connessi): minimo albero ricoprente Grafi (non orientati e connessi): minimo albero ricoprente Una breve presentazione Definizioni Sia G=(V,E) un grafo non orientato e connesso. Un albero ricoprente di G è un sottografo T G tale che: T è

Dettagli

Esempi. non. orientato. orientato

Esempi. non. orientato. orientato Definizione! Un grafo G = (V,E) è costituito da un insieme di vertici V ed un insieme di archi E ciascuno dei quali connette due vertici in V detti estremi dell arco.! Un grafo è orientato quando vi è

Dettagli

Pianificazione dei progetti. Alberto Caprara DEIS - Università di Bologna

Pianificazione dei progetti. Alberto Caprara DEIS - Università di Bologna Pianificazione dei progetti Alberto Caprara DEIS - Università di Bologna acaprara@deis.unibo.it Tecniche reticolari Metodologie per la risoluzione di problemi di pianificazione di progetti Progetto: insieme

Dettagli

Esercitazione 3. Osserviamo che, dato un grafo con pesi distinti, questo ammette un unico MST.

Esercitazione 3. Osserviamo che, dato un grafo con pesi distinti, questo ammette un unico MST. Esercitazione 3 Problema 6: Sia G = (V, E) un grafo con pesi distinti sugli archi ed e E un arco di G. Progettare un algoritmo lineare in grado di determinare se esiste un MST di G che contiene l arco

Dettagli

Minimo albero di copertura

Minimo albero di copertura apitolo 0 Minimo albero di copertura efinizione 0.. ato un grafo G = (V, E) non orientato e connesso, un albero di copertura di G è un sottoinsieme T E tale che il sottografo (V, T ) è un albero libero.

Dettagli

Teoria dei Grafi Elementi di base della Teoria dei Grafi

Teoria dei Grafi Elementi di base della Teoria dei Grafi L. Pallottino, Sistemi Robotici Distribuiti - Versione del 4 Marzo 2015 42 Teoria dei Grafi Elementi di base della Teoria dei Grafi Definizione 1. Un grafo G = (V, E) è composto da un insieme finito di

Dettagli

Grafi pesati Minimo albero ricoprente

Grafi pesati Minimo albero ricoprente Algoritmi e Strutture Dati Definizioni Grafi pesati Minimo albero ricoprente Sia G=(V,E) un grafo non orientato e connesso. Un albero ricoprente di G è un sottografo T G tale che: T è un albero; T contiene

Dettagli

Problema dell albero di cammini minimi (SPT, Shortest Path Tree) o problema dei cammini minimi :

Problema dell albero di cammini minimi (SPT, Shortest Path Tree) o problema dei cammini minimi : Per almeno una delle soluzioni ottime { P i, i r } del problema generalizzato, l unione dei cammini P i forma un albero di copertura per G radicato in r e orientato, ossia un albero la cui radice è r i

Dettagli

Algoritmi e Strutture Dati. Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal (*)

Algoritmi e Strutture Dati. Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal (*) Algoritmi e Strutture Dati Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal (*) Progettare una rete stradale Supponiamo di dover progettare una rete stradale in cui il costo di costruzione di

Dettagli

Grafi (non orientati e connessi): minimo albero ricoprente

Grafi (non orientati e connessi): minimo albero ricoprente .. Grafi (non orientati e connessi): minimo albero ricoprente Una presentazione alternativa (con ulteriori dettagli) Problema: calcolo del minimo albero di copertura (M.S.T.) Dato un grafo pesato non orientato

Dettagli

B.1 I grafi: notazione e nomenclatura

B.1 I grafi: notazione e nomenclatura Appendice B Grafi e Reti In questa appendice richiamiamo i principali concetti relativi a grafi e reti; descriviamo inoltre alcune classi di strutture dati che possono essere utilizzate per implementare

Dettagli

Bioinformatica. Grafi. a.a Francesca Cordero. Grafi Bioinformatica

Bioinformatica. Grafi. a.a Francesca Cordero. Grafi Bioinformatica fcordero@di.unito.it Introduzione cknowledgement Lucidi da. Horváth,. emetrescu et al, lgoritmi e strutture dati, McGraw-Hill 3 efinizione: che cosa sono i grafi? definizione astratta: un grafo G = (V,)

Dettagli

Problemi, istanze, soluzioni

Problemi, istanze, soluzioni lgoritmi e Strutture di Dati II 2 Problemi, istanze, soluzioni Un problema specifica una relazione matematica tra dati di ingresso e dati di uscita. Una istanza di un problema è formata dai dati di un

Dettagli

PROBLEMA DEI CAMMINI MINIMI [CORMEN ET AL. CAP. 24] Il costo di cammino minimo da un vertice u ad un vertice v è definito nel seguente modo:

PROBLEMA DEI CAMMINI MINIMI [CORMEN ET AL. CAP. 24] Il costo di cammino minimo da un vertice u ad un vertice v è definito nel seguente modo: PROBLEMA DEI CAMMINI MINIMI [CORMEN ET AL. CAP. 24] Sia G = (V,E) un grafo orientato ai cui archi è associato un costo W(u,v). Il costo di un cammino p = (v 1,v 2,...,v k ) è la somma dei costi degli archi

Dettagli

Il problema del commesso viaggiatore

Il problema del commesso viaggiatore Il problema del commesso viaggiatore Mauro Passacantando Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa mpassacantando@di.unipi.it M. Passacantando TFA 2012/13 - Corso di Ricerca Operativa Università

Dettagli

Grafi: introduzione. Definizioni: che cosa sono i grafi. Definizione

Grafi: introduzione. Definizioni: che cosa sono i grafi. Definizione Grafi: introduzione e rappresentazione efinizioni: che cosa sono i grafi Un grafo G=(V,) consiste in: un insieme V di vertici (o nodi) un insieme di coppie di vertici, detti archi o spigoli: ogni arco

Dettagli

Alberi di copertura. Mauro Passacantando. Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa

Alberi di copertura. Mauro Passacantando. Dipartimento di Informatica Largo B. Pontecorvo 3, Pisa Alberi di copertura Mauro Passacantando Dipartimento di Informatica Largo B. Pontecorvo, Pisa mpassacantando@di.unipi.it M. Passacantando TFA 0/ - Corso di Ricerca Operativa Università di Pisa / 9 Definizioni

Dettagli

Cammini minimi. Damiano Macedonio

Cammini minimi. Damiano Macedonio Cammini minimi Damiano Macedonio mace@unive.it Copyright 2010 2012, Moreno Marzolla, Università di Bologna, Italy (http://www.moreno.marzolla.name/teaching/asd2011b/) Modifications Copyright c 2015, Damiano

Dettagli

Grafi non orientati. Grafi (non orientati) Rappresentazione di Grafi: matrice delle adiacenze. Tipiche applicazioni di modelli basati su grafi

Grafi non orientati. Grafi (non orientati) Rappresentazione di Grafi: matrice delle adiacenze. Tipiche applicazioni di modelli basati su grafi Grafi non orientati Grafi (non orientati) Notazione. G = (V, E) V = nodi (o vertici). E = archi (o lati) tra coppie di nodi. Modella relazioni definite tra coppie di oggetti. aglia di un grafo: numero

Dettagli

età (anni) manutenzione (keuro) ricavato (keuro)

età (anni) manutenzione (keuro) ricavato (keuro) .6 Cammini minimi. Determinare i cammini minimi dal nodo 0 a tutti gli altri nodi del seguente grafo, mediante l algoritmo di Dijkstra e, se applicabile, anche mediante quello di Programmazione Dinamica.

Dettagli

Esercizi Union-Find e su Grafi. Ugo Vaccaro

Esercizi Union-Find e su Grafi. Ugo Vaccaro Progettazione di Algoritmi Anno Accademico 0 07 Esercizi Union-Find e su Grafi. Ugo Vaccaro. Esercizio: Scrivere pseudocodice per Make-Set, Union, e Find-Set usando la rappresentazione attraverso liste

Dettagli

Progetto e Ottimizzazione di Reti 2. Nozioni base di Teoria dei Grafi

Progetto e Ottimizzazione di Reti 2. Nozioni base di Teoria dei Grafi Progetto e Ottimizzazione di Reti 2. Nozioni base di Teoria dei Grafi ANTONIO SASSANO (A-L) CARLO MANNINO(M-Z) Uniersità di Roma La Sapienza Dipartimento di Informatica e Sistemistica Corso di Larea in

Dettagli

Algoritmi e Strutture Dati. Capitolo 13 Cammini minimi: Algoritmo di Bellman e Ford

Algoritmi e Strutture Dati. Capitolo 13 Cammini minimi: Algoritmo di Bellman e Ford Algoritmi e Strutture Dati Capitolo 13 Cammini minimi: Algoritmo di Bellman e Ford Cammini minimi in grafi: una trilogia Cammini minimi in grafi: Episodio II: cammini minimi a singola sorgente (per grafi

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Introduzione ai grafi Grafi: Definizione e Algoritmi di visita Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino A.A. 2007/08 Introduzione ai

Dettagli

Algoritmi e Strutture dati Mod B. Grafi: Percorsi Minimi (parte I)

Algoritmi e Strutture dati Mod B. Grafi: Percorsi Minimi (parte I) Algoritmi e Strutture dati Mod B Grafi: Percorsi Minimi (parte I) Grafi: Percorsi minimi Un percorso minimo in un grafo G= grafo pesato orientato, con funzione di peso w: E fi che mappa archi in pesi

Dettagli

GRAFI. Cosa sono Grafi non orientati Grafi orientati Grafi pesati Alberi Automi!

GRAFI. Cosa sono Grafi non orientati Grafi orientati Grafi pesati Alberi Automi! G R A F I 1 GRAFI Cosa sono Grafi non orientati Grafi orientati Grafi pesati Alberi Automi! 2 cip: cip: Pallogrammi Pallogrammi GRAFI: cosa sono I grafi sono una struttura matematica fondamentale: servono

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 3 Cammini minimi: algoritmo di Dijkstra Cammini minimi in grafi: cammini minimi a singola sorgente (senza pesi negativi) Cammini minimi in grafi pesati Sia G=(V,E,w)

Dettagli

Introduzione alla Teoria dei Grafi

Introduzione alla Teoria dei Grafi Sapienza Uniersità di Roma - Dipartimento di Ingegneria Informatica, Automatica e Gestionale Introduzione alla Teoria dei Grafi Docente: Renato Bruni bruni@dis.uniroma1.it Corso di: Ottimizzazione Combinatoria

Dettagli

Teoria della Complessità Computazionale

Teoria della Complessità Computazionale Teoria della Complessità Computazionale Daniele Vigo D.E.I.S. - Università di Bologna dvigo@deis.unibo.it Rev. 1.3, 11/00 rev. 1.3 - Novembre 2000 Teoria della Complessità Studia la difficoltà dei problemi

Dettagli

Cammini minimi in grafi:

Cammini minimi in grafi: Algoritmi e strutture dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Cammini minimi in grafi: una trilogia Cammini minimi in grafi: Episodio III: la fine della trilogia Input: nelle puntate

Dettagli

Progettazione di Algoritmi

Progettazione di Algoritmi Corso di laurea in Informatica Prova scritta del: Progettazione di Algoritmi 0/06/06 Prof. De Prisco Inserire i propri dati nell apposito spazio. Non voltare la finché non sarà dato il via. Dal via avrai

Dettagli

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e Strutture Dati Cammini minimi Definizioni Sia G = (V,E) un grafo orientato pesato sugli archi. Il costo di un cammino π = è dato da: Un cammino minimo tra una coppia di

Dettagli

algoritmi e strutture di dati

algoritmi e strutture di dati algoritmi e strutture di dati grafi m.patrignani nota di copyright queste slides sono protette dalle leggi sul copyright il titolo ed il copyright relativi alle slides (inclusi, ma non limitatamente, immagini,

Dettagli

Grafi (orientati): cammini minimi

Grafi (orientati): cammini minimi .. Grafi (orientati): cammini minimi Una presentazione alternativa (con ulteriori dettagli) Un algoritmo greedy per calcolare i cammini minimi da un vertice sorgente in un grafo orientato e pesato, senza

Dettagli

Richiami di matematica discreta: grafi e alberi. Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino

Richiami di matematica discreta: grafi e alberi. Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Richiami di matematica discreta: grafi e alberi Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Grafi Definizione: G = (V,E) V: insieme finito di vertici E: insieme finito di archi,

Dettagli

Capitolo 5. Algoritmi di ricerca su grafo. 5.1 Algoritmi di ricerca su grafo

Capitolo 5. Algoritmi di ricerca su grafo. 5.1 Algoritmi di ricerca su grafo Capitolo 5 Algoritmi di ricerca su grafo Gli algoritmi di ricerca su grafo, oggetto dei prossimi paragrafi, rappresentano tecniche fondamentali per determinare nodi che soddisfino particolari proprietà

Dettagli

COMPLEMENTI DI SHORTEST-PATH. ASD Fabrizio d'amore

COMPLEMENTI DI SHORTEST-PATH. ASD Fabrizio d'amore COMPLEMENTI DI SHORTEST-PATH ASD 2016-17 Fabrizio d'amore problemi di shortest-path (SP) grafo di riferimento G=(V,E) semplice/orientato pesato pesi non negativi pesi arbitrari, ma no cicli a peso negativo

Dettagli

Open walk: Nodo di partenza diverso da quello di arrivo Close walk: Nodo di partenza coincidente con quello di arrivo

Open walk: Nodo di partenza diverso da quello di arrivo Close walk: Nodo di partenza coincidente con quello di arrivo Connettività WALK, TRAIL, PATH Walk (passeggiata) Walk (passeggiata): Una passeggiata è una sequenza di nodi e link che inizia e finisce con un nodo, in cui ogni nodo è incidente allo spigolo che lo precede

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 13 Cammini minimi: Algoritmo di Dijkstra (*) (ACM in grafi diretti e non diretti senza archi di peso negativo) Punto della situazione Algoritmo basato sull ordinamento

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Grafi e visite di grafi Fabio Patrizi 1 Grafo: 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

Dettagli

Ordinamenti. Vittorio Maniezzo Università di Bologna

Ordinamenti. Vittorio Maniezzo Università di Bologna Ordinamenti 1 Vittorio Maniezzo Università di Bologna Grafo : definizione Un grafo G = (V,E)è composto da: V: insieme di vertici E V V: insieme di archi (edge) che connettono i vertici Un arco a= {u,v}

Dettagli

Algoritmi e strutture dati

Algoritmi e strutture dati Algoritmi e Strutture Dati Minimo albero ricoprente Sia G = (V, E) un grafo connesso non orientato. Definizioni Un albero ricoprente di G è un sottografo T G tale che: T è un albero; T contiene tutti i

Dettagli

Appunti lezione Capitolo 13 Programmazione dinamica

Appunti lezione Capitolo 13 Programmazione dinamica Appunti lezione Capitolo 13 Programmazione dinamica Alberto Montresor 12 Novembre, 2015 1 Domanda: Fattore di crescita dei numeri catalani Vogliamo dimostrare che cresce almeno come 2 n. La nostra ipotesi

Dettagli

Ordinamenti. Grafo : definizione. Un grafo G = (V,E)è composto da: V: insieme di vertici E V V: insieme di archi (edge) che connettono i vertici

Ordinamenti. Grafo : definizione. Un grafo G = (V,E)è composto da: V: insieme di vertici E V V: insieme di archi (edge) che connettono i vertici Ordinamenti 1 Vittorio Maniezzo Università di Bologna Grafo : definizione Un grafo G = (V,E)è composto da: V: insieme di vertici E V V: insieme di archi (edge) che connettono i vertici Un arco a= {u,v}

Dettagli

Alberi di copertura minimi

Alberi di copertura minimi Alberi di copertura minimi 1 Problema Nella progettazione di circuiti elettronici è spesso necessario collegare i morsetti. Per connettere un insieme di n morsetti si può usare un insieme di n-1 fili elettrici.

Dettagli

Analisi e implementazione dell algoritmo di Dijkstra (Parte 1)

Analisi e implementazione dell algoritmo di Dijkstra (Parte 1) Analisi e implementazione dell algoritmo di Dijkstra (Parte 1) Algoritmicamente August 1, 2009 http://algoritmicamente.wordpress.com/ 1 Concetti fondamentali Definizione 1 Un grafo è un insieme di vertici

Dettagli

Cammini minimi con sorgente singola

Cammini minimi con sorgente singola Cammini minimi con sorgente singola Vittorio Maniezzo - Università di Bologna Cammini minimi con sorgente singola Dato: un grafo(orientatoo non orientato) G= (V,E,W) con funzionedi peso w:e R un particolarevertices

Dettagli

Introduzione ai grafi. Introduzione ai grafi p. 1/2

Introduzione ai grafi. Introduzione ai grafi p. 1/2 Introduzione ai grafi Introduzione ai grafi p. 1/2 Grafi Un grafo G è costituito da una coppia di insiemi (V,A) dove V è detto insieme dei nodi e A è detto insieme di archi ed è un sottinsieme di tutte

Dettagli

Laboratorio di Algoritmi

Laboratorio di Algoritmi Laboratorio di Algoritmi Corso di Laurea in Matematica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Martedì 8.30-10.30 in aula 3 Mercoledì 10.30-12.30 in Aula 2 Giovedì 8.30-10.30 in

Dettagli

7.1 Progettare un algoritmo per costruire ciclo euleriano di un grafo non orientato.

7.1 Progettare un algoritmo per costruire ciclo euleriano di un grafo non orientato. Capitolo 7 Grafi 7.1 Progettare un algoritmo per costruire ciclo euleriano di un grafo non orientato. 7.3 Un grafo a torneo è un grafo orientato G in cui per ogni coppia di vertici x e y esiste un solo

Dettagli

Esercitazione 6 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016

Esercitazione 6 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016 Esercitazione 6 Algorithmi e Strutture Dati (Informatica) A.A 2015/2016 Tong Liu April 14, 2016 Elementi Fondamentali Rappresentazione n = V numero di vertici (nodi) m = E numero di archi Matrice di adiacenza:

Dettagli

Grafi e reti di flusso

Grafi e reti di flusso Grafi e reti di flusso Molti problemi di ottimizzazione sono caratterizzati da una struttura di grafo: in molti casi questa struttura emerge in modo naturale, in altri nasce dal particolare modo in cui

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Prof. Aniello Murano Grafi: Implementazione ed operazioni di base Corso di Laurea Codice insegnamento Email docente Anno accademico Laboratorio di Algoritmi e

Dettagli

Visite in Grafi BFS e DFS

Visite in Grafi BFS e DFS Visite in Grafi BFS e DFS Visita di un Grafo Obiettivo: Visitare una sola volta tutti i nodi del grafo. Es.: visitare un porzione del grafo del Web Difficoltà: Presenza di cicli: Marcare i nodi visitati

Dettagli

RICERCA OPERATIVA (a.a. 2018/19)

RICERCA OPERATIVA (a.a. 2018/19) Secondo appello //9 RICERCA OPERATIVA (a.a. 8/9) Nome: Cognome: Matricola: ) Si consideri il seguente problema di PL: min y + y y y y y = y + y y = y, y, y, y Si verifichi se la soluzione ȳ =,,, sia ottima

Dettagli

INFORMATICA AA Università degli Studi di Ferrara Facoltà di Scienze MM FF NN Corso di Laurea in «Scienze e Tecnologie per i Beni Culturali»

INFORMATICA AA Università degli Studi di Ferrara Facoltà di Scienze MM FF NN Corso di Laurea in «Scienze e Tecnologie per i Beni Culturali» Università degli Studi di Ferrara Facoltà di Scienze MM FF NN Corso di Laurea in «Scienze e Tecnologie per i Beni Culturali» AA 2010-2011 INFORMATICA Prof. Giorgio Poletti giorgio.poletti@unife.it Grafi

Dettagli

Informatica 3. LEZIONE 25: Algoritmi sui grafi. Modulo 1: Problema del percorso più breve Modulo 2: Spanning tree a costo minimo

Informatica 3. LEZIONE 25: Algoritmi sui grafi. Modulo 1: Problema del percorso più breve Modulo 2: Spanning tree a costo minimo Informatica LEZIONE 2: Algoritmi sui grafi Modulo 1: Problema del percorso più breve Modulo 2: Spanning tree a costo minimo Informatica Lezione 2 - Modulo 1 Problema del percorso più breve Problema Problema:

Dettagli

Modelli di Programmazione Lineare. PRTLC - Modelli

Modelli di Programmazione Lineare. PRTLC - Modelli Modelli di Programmazione Lineare PRTLC - Modelli Schema delle esercitazioni Come ricavare la soluzione ottima Modelli Solver Come ricavare una stima dell ottimo Rilassamento continuo - generazione di

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Capitolo 13 Cammini minimi: Ordinamento topologico Grafo pesato: è un grafo G=(V,E,w) in cui ad ogni arco viene associato un valore definito dalla funzione peso w (definita su

Dettagli

Algoritmi e Strutture dati Mod B. Grafi Percorsi Minimi: algoritmi esatti e algoritmi euristici (A*)

Algoritmi e Strutture dati Mod B. Grafi Percorsi Minimi: algoritmi esatti e algoritmi euristici (A*) Algoritmi e Strutture dati Mod B Grafi Percorsi Minimi: algoritmi esatti e algoritmi euristici (A*) Grafi: Percorsi minimi Un percorso minimo in un grafo G= grafo pesato orientato, con funzione di

Dettagli

Algoritmi e Strutture Dati. Capitolo 11 Grafi e visite di grafi

Algoritmi e Strutture Dati. Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati Capitolo 11 Grafi e visite di grafi grafi, teoria dei grafi, problemi su grafi Origini storiche Nel 1736, il matematico Eulero, affrontò l annoso problema dei 7 ponti di Königsberg

Dettagli

Sommario della lezione

Sommario della lezione Sommario della lezione Introduzione ai grafi Definizioni, applicazioni,... Rappresentazioni comuni di grafi Esplorazione di grafi Università degli Studi di Salerno Corso di Algoritmi Prof. Ugo Vaccaro

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi Elementari su Grafi Maria Rita Di Berardini, Emanuela Merelli 1 1 Dipartimento di Matematica e Informatica Università di Camerino Polo di Scienze Università di Camerino ad Ascoli Piceno Visita

Dettagli

Grafi: definizioni e visite

Grafi: definizioni e visite Grafi: definizioni e visite Grafi (non orientati) Grafo (non orientato): G = (V, E) V = nodi (o vertici) E = archi fra coppie di nodi distinti. Modella relazioni fra coppie di oggetti. Parametri della

Dettagli

Algoritmo basato su cancellazione di cicli

Algoritmo basato su cancellazione di cicli Algoritmo basato su cancellazione di cicli Dato un flusso ammissibile iniziale, si costruisce una sequenza di flussi ammissibili di costo decrescente. Ciascun flusso è ottenuto dal precedente flusso ammissibile

Dettagli

Esercitazione 7. Grafi. Rappresentazione e algoritmi di visita

Esercitazione 7. Grafi. Rappresentazione e algoritmi di visita Esercitazione 7 Grafi Rappresentazione e algoritmi di visita Grafo G = (V,E) non orientato 1 1 G = (V,E) orientato 6 Rappresentazione Grafo G = (V,E) metodi standard per la rappresentazione Liste di adiacenza

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ Grafi pesati e alberi minimi di copertura Riepilogo delle lezioni precedenti Definizione di

Dettagli

Quinto appello 27/6/ = 4. B b B = 2 b N = 4

Quinto appello 27/6/ = 4. B b B = 2 b N = 4 Quinto appello // RICERCA OPERATIVA (a.a. /) Nome: Cognome: Matricola: ) Si risolva il problema di PL dato applicando l algoritmo del Simplesso Duale, per via algebrica, a partire dalla base B {, }. Per

Dettagli