La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Grafi e Cammini minimi Algoritmi e Strutture Dati.

Presentazioni simili


Presentazione sul tema: "Grafi e Cammini minimi Algoritmi e Strutture Dati."— Transcript della presentazione:

1 Grafi e Cammini minimi Algoritmi e Strutture Dati

2 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 2 Copyright © The McGraw - Hill Companies, srl Definizioni Sia G=(V,E) un grafo orientato con costi w sugli archi; w: ER. Il costo di un cammino = è dato da: Un cammino minimo tra una coppia di vertici x,y è un cammino di costo minore o uguale a quello di ogni altro cammino tra gli stessi vertici.

3 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 3 Copyright © The McGraw - Hill Companies, srl Proprietà dei cammini minimi Sottostruttura ottima: ogni sottocammino di un cammino minimo è anchesso minimo –Questa proprietà permette di applicare tecniche di programmazione Greedy e Dinamica, assicurando soluzioni ottime: a partire da sottocammini minimi si perviene a cammini minimi. In generale potrebbe esistere più di un cammino minimo tra una stessa coppia di vertici. –A noi interesserà uno qualunque Nel caso di grafi orientati con pesi reali, si potrebbero avere cicli caratterizzati da un costo negativo; in tal caso la soluzione ottima potrebbe essere - (cicli infiniti !!!!) –Non vengono mai considerati grafi con cicli aventi costo minore di zero

4 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 4 Copyright © The McGraw - Hill Companies, srl Distanza fra vertici Sia G=(V,E) un grafo orientato con costi w sugli archi; w: ER. La distanza d xy tra due vertici x e y in G è: –il costo di un cammino minimo tra da x a y, –o + se i due vertici x e y non sono connessi Caso Particolare: la distanza di un vertice da se stesso è 0

5 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 5 Copyright © The McGraw - Hill Companies, srl Distanza fra vertici Disuguaglianza triangolare: per ogni x, y e z in V vale sempre la relazione: Condizione di Bellman: per ogni arco (u,v) in E e per ogni vertice s in V, vale:

6 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 6 Copyright © The McGraw - Hill Companies, srl Calcolare un cammino minimo Obiettivo: calcolare il cammino minimo, con v 0 =x e v k =y Un arco (u,v) appartiene ad un cammino minimo tra s e v se e solo se la condizione di Bellman vale con leguaglianza: d su +w(u,v)=d sv O(δ out *k) O(n*k) caso peggiore

7 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 7 Copyright © The McGraw - Hill Companies, srl Algoritmi per il Calcolo del Cammino Minimo Ci sono diverse varianti Sorgente/Destinazione Cammino minimo tra una singola coppia Cammini minimi a sorgente singola (da un vertice a tutti gli altri) Cammini minimi tra tutte le coppie Tipologia di Grafo Cammini minimi per generico grafo orientato con funzione costo reale Cammini minimi per grafi orientati aciclici con funzione costo reale Cammini minimi per generico grafo orientato ma con funzione costo maggiore o uguale a zero

8 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 8 Copyright © The McGraw - Hill Companies, srl Alberi di Cammini Minimi Come memorizzare i cammini minimi a partire da una sorgente s ? Soluzione ovvia: liste di vertici, una lista per ogni destinazione –Spazio: (n cammini di lunghezza max O(n) = O(n 2 )) Soluzione migliore: I cammini minimi da un vertice s a tutti gli altri vertici del grafo possono essere rappresentati tramite un albero radicato in s, detto albero dei cammini minimi –Spazio: vettore/lista di O(n) elementi

9 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 9 Copyright © The McGraw - Hill Companies, srl Alberi di Cammini Minimi Esempio: Vettore di n elementi *ABACEE ABCDE FG Si basa sul Lemma che ogni sottocammino di un cammino minimo è esso stesso un cammino minimo

10 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 10 Copyright © The McGraw - Hill Companies, srl Tecnica del Rilassamento Tutti gli algoritmi che vedremo nel seguito si basano sulla tecnica del rilassamento Si parte da stime per eccesso delle distanze D xy d xy Si aggiornano le stime, decrementandole progressivamente fino a renderle esatte. Aggiornamento delle stime basato sul seguente passo di rilassamento:

11 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 11 Copyright © The McGraw - Hill Companies, srl Algoritmo di Bellman e Ford Algoritmo generico per qualunque grafo orientato G=(V,E) con funzione costo w: ER Calcola Cammini Minimi a Sorgente singola

12 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 12 Copyright © The McGraw - Hill Companies, srl Sia = un cammino minimo. Se fossimo in grado di eseguire i passi di rilassamento nellordine seguente: in k passi avremmo la soluzione. Purtroppo non conosciamo lordine giusto, essendo ignoto Approccio di Bellman e Ford

13 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 13 Copyright © The McGraw - Hill Companies, srl Approccio di Bellman e Ford Esegue n passate In ciascuna passata rilassa tutti gli archi Dopo la j-esima passata, i primi j rilassamenti corretti sono stati certamente eseguiti Esegue però molti rilassamenti inutili!

14 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 14 Copyright © The McGraw - Hill Companies, srl Pseudocodice Tempo di esecuzione: O(n m) Approccio di Bellman e Ford

15 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 15 Copyright © The McGraw - Hill Companies, srl Si applica per cammini minimi a sorgente singola Sfrutta il fatto che non vi sono cicli, dunque se esiste un cammino da u a v, non può esistere il cammino da v a u Sulla base di questa proprietà, lalgoritmo rilassa gli archi sulla base di un precedente ordinamento topologico –Ogni arco viene rilassato solo una volta ! Variante dellAlgoritmo di Bellman e Ford per Grafi Aciclici

16 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 16 Copyright © The McGraw - Hill Companies, srl Ordinamento topologico Funzione : V {1, … n} tale che (u)< (v) se esiste un cammino da u a v in G Esiste solo e solo se G è aciclico Si costruisce a partire da un vertice che non ha archi entranti Lordinamento topologico non è unico !!!

17 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 17 Copyright © The McGraw - Hill Companies, srl Calcolo di un ordinamento topologico Tempo di esecuzione: O(n + m)

18 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 18 Copyright © The McGraw - Hill Companies, srl Variante dellAlgoritmo di Bellman e Ford per Grafi Aciclici Tempo di esecuzione: O(n + m) Eseguire i rilassamenti in ordine topologico Ogni arco viene rilassato solo una volta !

19 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 19 Copyright © The McGraw - Hill Companies, srl Algoritmo di Dijkstra Calcolo dei cammini minimi: a sorgente singola in grafi orientati G=(V,E) ciclici (può contenere cicli) Gli archi devono avere costi non negativi, ossia ad ogni arco è associata la funzione costo w: E R + {0}

20 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 20 Copyright © The McGraw - Hill Companies, srl Principio di Funzionamento: Estensione dellalbero dei cammini minimi Lemma: Se T è un albero dei cammini minimi radicato in s che non include tutti i vertici raggiungibili da s, larco (u,v) tale che u T e v T che minimizza la quantità d su +w(u,v) appartiene a un cammino minimo da s a v

21 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 21 Copyright © The McGraw - Hill Companies, srl Approccio di Dijkstra Si suppone che ogni vertice sia raggiungibile da s Allinizio lalbero T contiene solo s Si applica per (n-1) volte: –Scegli un arco (u,v) con u T e v T che minimizza la quantità D su +w(u,v), effettua il passo di rilassamento D sv D su +w(u,v), ed aggiungilo a T algoritmo DijkstraGenerico(grafo G, vertice s) T inizializza D tale che D sv =+ per vs e D ss =0 Talbero formato solo da s while (T ha meno di n nodi) do trova larco (u,v) incidente su T con D su +w(u,v) minimo D sv D su +w(u,v) {rilassamento} rendi u padre di v in T return T

22 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 22 Copyright © The McGraw - Hill Companies, srl Esempio (1/2)

23 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 23 Copyright © The McGraw - Hill Companies, srl Esempio (2/2)

24 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 24 Copyright © The McGraw - Hill Companies, srl Implementazione con Code con Priorità Operazione cruciale: selezione dellarco (u,v) con u T e v T che minimizza la quantità D su +w(u,v) Per ogni nodo u, significa fare m calcoli O(m) Totale complessità O(m*n), eccessiva!!!! Soluzione: uso code con priorità; complessità varia da O(m*logn) a O(m+n*logn)

25 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 25 Copyright © The McGraw - Hill Companies, srl Implementazione con Code con Priorità Uso della coda di priorità Min per gestire larco (u,v) con u T e v T Si preferisce mantenere vertici invece che archi (al più n elementi in coda) –la coda memorizzerà solo il vertice v, che minimizza la quantità D su +w(u,v) –il valore di ogni elemento della coda è il vertice v –La priorità di ogni elemento della coda è la quantità D su +w(u,v) Se il vertice v già esiste in coda e trovo un altro arco (u,v) per cui la quantità D su +w(u,v) diminuisce, allora devo aggiornare la priorità dellelemento v –Si usa una funzione delle code di priorità Min: DecreaseKey

26 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 26 Copyright © The McGraw - Hill Companies, srl Pseudocodice

27 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 27 Copyright © The McGraw - Hill Companies, srl Tempo di esecuzione Al più: n insert, n*O(log n) n deleteMin, n*O(log n) (m-n) decreaseKey, (m-n)*O(log n) O(m log n) utilizzando heap O(m+n log n) utilizzando heap di Fibonacci (DecreaseKey O(1))

28 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 28 Copyright © The McGraw - Hill Companies, srl Algoritmo di Floyd e Warshall Algoritmo generico per qualunque grafo orientato G=(V,E) con funzione costo w: ER Calcola Cammini Minimi tra tutte le coppie Tempo di esecuzione: O(n 3 )

29 Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano Algoritmi e strutture dati 2/ed 29 Copyright © The McGraw - Hill Companies, srl Riepilogo Algoritmi classici per il calcolo di distanze (e quindi di cammini minimi), basati sulla tecnica del rilassamento: –Bellman e Ford: cammini minimi a sorgente singola, grafi diretti senza cicli negativi, tempo O(nm) Grafi diretti aciclici: tempo O(n+m) –Dijkstra: cammini minimi a sorgente singola, grafi diretti senza pesi negativi, tempo O(m+n log n) –Floyd e Warshall: cammini minimi tra tutte le coppie in tempo O(n 3 )


Scaricare ppt "Grafi e Cammini minimi Algoritmi e Strutture Dati."

Presentazioni simili


Annunci Google