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 con n = V il numero di nodi di G, e con m = E il numero di archi di G.
Algoritmi e Strutture di Dati II 3 Un grafo diretto a b c d e f g h
Algoritmi e Strutture di Dati II 4 Successori e predecessori Dato un nodo u, isuccessori di u sono i vertici v tali che (u, v) 2 E. Ilgrado uscente di un nodo u è i l n u m e r o d i successori di u. I predecessori di u sono i vertici v tali che (v, u) 2 E. llgrado entrante di u è il numero di predecessori di u. Il grado di un nodo è la somma tra grado uscente e grado entrante del nodo.
Algoritmi e Strutture di Dati II 5 Cammini e cicli Un cammino è una sequenza di nodi collegati a due a due da archi. La lunghezza del cammino è il numero di archi del cammino. Un cammino semplice è un cammino senza nodi ripetuti. Esiste sempre un cammino di lunghezza zero da un nodo a se stesso. Un ciclo è un cammino da un nodo a se stesso che contiene almeno un arco. Un ciclo è semplice se il cammino ottenuto togliendo dal ciclo l ultimo nodo è semplice. Un cappio è un ciclo di lunghezza uno.
Algoritmi e Strutture di Dati II 6 Grafi indiretti Un grafo diretto (o grafo non 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 non orientati. Un arco non orientato è u n i n s i e m e {u, v}, con u 6= v.
Algoritmi e Strutture di Dati II 7 Grafo indiretto a b c d e f g h
Algoritmi e Strutture di Dati II 8 Quesiti 1. Qual è il numero massimo di archi di un grafo diretto di n nodi? 2. Qual è il numero massimo di archi di un grafo indiretto di n nodi?
Algoritmi e Strutture di Dati II 9 Visite di grafi Gli algoritmi di visita di un grafo hanno come obiettivo l esplorazione di tutti i nodi e gli archi del grafo. Vi sono due modi principali per esplorare un grafo: Visita in ampiezza: di fratello in fratello. Visita in profondità: di padre in figlio.
Algoritmi e Strutture di Dati II 10 Le due visite a confronto 1 1 2 3 4 2 5 9 5 6 7 3 4 6 8 9 7 8
Algoritmi e Strutture di Dati II 11 Ordinamento topologico Un DAG è u n grafo diretto aciclico. Un ordinamento topologico di un DAG G =(V,E) èun ordinamento totale dei suoi vertici tale che: se (u, v) 2 E allora u v.
Algoritmi e Strutture di Dati II 12 watch 9/10 11/16 undershorts socks 17/18 12/15 pants shirt 1/8 shoes 13/14 6/7 belt tie 2/5 jacket 3/4
Algoritmi e Strutture di Dati II 13 Ordinamento topologico socks undershorts pants shoes watch shirt belt tie jacket 17/18 11/16 12/15 13/14 9/10 1/8 6/7 2/5 3/4
Algoritmi e Strutture di Dati II 14 Raggiungibilità Un nodo v è raggiungibile da un nodo u (oppure u raggiunge v) se esiste un cammino da u a v. Definiamo due relazioni sull insieme dei nodi: (a) la relazione di raggiungibilità R! tale che ur! v se v è raggiungibile da u; (b) la relazione di mutua raggiungibilità R tale che ur v se ur! v e vr! u. La relazione di mutua raggiungibilità è una relazione di equivalenza.
Algoritmi e Strutture di Dati II 15 Componenti fortemente connesse Dato un grafo diretto G =(V,E), le classi di equivalenza della relazione di mutua raggiungibilità sono dette componenti fortemente connesse (CFC) del grafo. In modo equivalente, una CFC di G =(V,E) èuninsieme massimale di vertici U µ V tale che ogni coppia di vertici in U è mutuamente raggiungibile. Se C 1,...,C k sono le CFC di G, allora: C i 6= ; per ogni i; C i \ C j = ; per ogni i 6= j; S k i=1 C i = V.
Algoritmi e Strutture di Dati II 16 a b c d e f g h
Algoritmi e Strutture di Dati II 17 Componenti connesse Nei grafi indiretti, la relazione di raggiungibilità R! coincide con la relazione di mutua raggiungibilità R. Le classi di equivalenza della relazione di raggiungibilità su grafi indiretti sono dette componenti connesse. a b c d e f g h
Algoritmi e Strutture di Dati II 18 Foreste Un grafo si dice: aciclico se non contiene cicli; (fortemente) connesso se ammette una unica componente (fortemente) connessa. Una foresta è un grafo indiretto aciclico. a b c d e f g h
Algoritmi e Strutture di Dati II 19 Alberi Un albero è un grafo indiretto aciclico e connesso. a b c d e f g h
Algoritmi e Strutture di Dati II 20 Proprietà degli alberi Sia T =(V,E) un albero. Allora: 1. Ogni due nodi di T sono connessi da un unico cammino semplice. 2. Rimuovendo un arco qualsiasi da T otteniamo un grafo sconnesso. 3. Aggiungendo un arco qualsiasi a T otteniamo un grafo ciclico. 4. E = V 1.
Algoritmi e Strutture di Dati II 21 Quesiti 1. Qual è il numero di archi di un albero di n nodi? 2. Qual è il numero di archi di una foresta di n nodi e k componenti connesse?
Algoritmi e Strutture di Dati II 22 Grafi pesati Un grafo pesato è un grafo G =(V,E,w), dove w : E! R è u n a funzione di peso che associa un numero reale chiamato peso (o costo) ad ogni arco. b 8 c 7 d a 4 8 11 7 i 2 6 4 14 9 10 e h 1 g 2 f
Algoritmi e Strutture di Dati II 23 Albero di supporto Sia G =(V,E,w) un grafo pesato indiretto e connesso. Un albero di supporto T =(V,F) dig è u n albero che ha come insieme dei nodi l insieme V dei nodi del grafo e come insieme degli archi un insieme F µ E. Il peso di un albero di supporto T =(V,F) è w(t )= X w(u, v) (u,v)2f
Algoritmi e Strutture di Dati II 24 Albero di supporto di peso minimo Il problema dell albero di supporto di costo minimo consiste nel trovare un albero di supporto di G di peso minimo. Tale albero non è necessariamente unico. b 8 c 7 d a 4 8 11 7 i 2 6 4 14 9 10 e 1 2 h g f
Algoritmi e Strutture di Dati II 25 Problema del cammino (di peso) minimo Dato un grafo diretto pesato G =(V,E,w), il peso di un cammino p = hv 0,v 1,...,v k i è la somma dei pesi dei propri archi, w(p) = k 1 X i=0 w(v i,v i+1 ) Dati due nodi u e v, uncammino minimo tra due nodi è, se esiste, un cammino di peso minimo che li collega.
Algoritmi e Strutture di Dati II 26 Due varianti del problema 1. Cammino minimo con una sorgente: dato un nodo sorgente s, trovare, per ogni nodo del grafo v, un cammino minimo da s a v; 2. Cammino minimo per tutte le coppie di nodi: per ogni coppia di nodi u, v del grafo trovare un cammino minimo da u a v.
Algoritmi e Strutture di Dati II 27 0 3 5 2 3 4 5 2 4 6 3 3 7 2 11 5 8 4 7 11 6
Algoritmi e Strutture di Dati II 28 4 3 1 3 4 6 5 8 0 5 11 3 3 2 7 6
Algoritmi e Strutture di Dati II 29 Grafo completo Un grafo completo è un grafo indiretto in cui ogni coppia di vertici distinti è connessa da un arco. a b f c e d
Algoritmi e Strutture di Dati II 30 Problema del commesso viaggiatore Dato un grafo indiretto G, untour in G è un ciclo che passa esattamente una volta per ogni nodo di G. Sia G un grafo indiretto, completo e pesato con pesi non negativi. Il problema del commesso viaggiatore consiste nel trovare il tour in G di peso minimo.
Algoritmi e Strutture di Dati II 31 a d e b f g c h
Algoritmi e Strutture di Dati II 32 a d a d e e b f g b f g c c h h C = a, b, c, h, d, e, f, g, a w(c) = 19,074 C* = a, b, c, h, f, g, e, d, a w(c*) = 14,715