La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Capitolo 13 Cammini minimi: Algoritmo di Dijkstra; Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati.

Presentazioni simili


Presentazione sul tema: "Capitolo 13 Cammini minimi: Algoritmo di Dijkstra; Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati."— Transcript della presentazione:

1 Capitolo 13 Cammini minimi: Algoritmo di Dijkstra; Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati

2 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 2 Punto della situazione Algoritmo di ordinamento topologico: albero dei cammini minimi in grafi (diretti) aciclici. Complessità Θ(n+m) (con liste di adiacenza). Come si ottiene? –Basta associare inizialmente ad ogni nodo il proprio grado entrante. Tale valore può essere calcolato in Θ(n+m) scorrendo le liste di adiacenza. Quindi, manteniamo una lista Z dei nodi con grado entrante pari a 0. Tale lista si può costruire in Θ(n), ovviamente. Quindi, selezioniamo un elemento di tale lista e lo eliminiamo dal grafo, assieme a tutti gli archi uscenti. Per ogni arco uscente eliminato, diminuiamo di 1 il grado entrante del nodo di arrivo corrispondente, ed aggiungiamo eventualmente il nodo a Z se il suo grado entrante si è azzerato. Algoritmo di Bellman&Ford: albero dei cammini minimi per tutti i grafi che non contengono cicli negativi. Complessità Θ(n·m) (con liste di adiacenza).

3 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 3 Algoritmo di Dijkstra (albero dei cammini minimi in grafi con pesi non negativi)

4 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 4 Estendere lalbero dei cammini minimi Lemma di Dijkstra (1959): Sia G=(V,E,w) diretto con pesi non negativi, e sia T un sottoalbero dellalbero dei cammini minimi radicato in s che include s ma non include tutti i vertici raggiungibili da s. Sia (u,v) larco che minimizza la quantità d st + w(t,z), per ogni t T e z T. Allora, (u,v) appartiene a un cammino minimo da s a v. Dim.: Supponiamo per assurdo che (u,v) non appartenga ad un cammino minimo da s a v, e quindi che d sv.

5 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 5 Per la minimalità dei sottocammini di un cammino minimo: w( sv ) = w( sy ) + w( yv ) = d sx + w(x,y) + w( yv ). Poiché (u,v) minimizza d st + w(t,z) per ogni t T e z T, allora: d sx + w(x,y) d su + w(u,v) e quindi: w( sv ) d su + w(u,v) + w( yv ) e poiché w( yv ) 0, ne segue d sv w( sv ) d su + w(u,v), assurdo (avevamo supposto d sv < d su + w(u,v)).

6 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 6 Approccio di Dijkstra I nodi da aggiungere progressivamente a T sono mantenuti in una coda con priorità, associati ad un (unico) arco che li connette a T. Se y è in coda con arco (x,y) associato, e se analizzando (v,y) dopo aver aggiunto v a T risulta D sv +w(v,y) < D sx +w(x,y), rimpiazziamo (x,y) con (v,y), ed aggiorniamo D sy. Dato un nodo u in T, scegli un nodo v T che minimizza la quantità D su +w(u,v)d su +w(u,v)= d sv, aggiungi v a T ed effettua il passo di rilassamento su ogni nodo y T adiacente a v (per il quale cioè (v,y) E).

7 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 7 Pseudocodice Nota: T è un albero che contiene tutti i nodi già aggiunti alla soluzione (ovvero quelli per i quali è già stato trovato il cammino minimo da s), più i nodi correntemente contenuti nella coda di priorità, ciascuno connesso al rispettivo nodo padre; non va confuso con lalbero T considerato nel lemma di Dijkstra!

8 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 8 Tempo di esecuzione: implementazioni elementari Al più n insert, n deleteMin e m decreaseKey nella coda di priorità O(n log n+n+mn)=O(mn) con array ordinati O(n+n 2 +m log n)=O(n 2 +m log n) con array non ordinati O(n 2 log n+n+m)=O(n 2 log n) con liste ordinate O(n+n 2 +mn)=O(mn) con liste non ordinate InsertDelMinDecKey Array ordinato O(log n)O(1)O(n) Array non ord. O(1)O(n)O(log n) Lista Ordinata O(n)O(1) Lista non ord. O(1)O(n)

9 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 9 Tempo di esecuzione: implementazioni efficienti Al più n insert, n deleteMin e m decreaseKey nella coda di priorità O(n log n+n log n+m log n)=O(m log n) utilizzando heap (binari o binomiali) O(n+n log n+m)=O(m+n log n) con heap di Fibonacci InsertDelMinDecKey Heap binario O(log n) Heap Binom. O(log n) Heap Fibon. O(1)O(log n)O(1)

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

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

12 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 12 Approfondimento Applicare lalgoritmo di Dijkstra con sorgente s sul seguente grafo: s a c b d

13 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 13 Algoritmo di Floyd e Warshall (cammini minimi tra tutte le coppie di nodi per tutti i grafi che non contengono cicli negativi)

14 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 14 Approccio Elegante applicazione della tecnica della programmazione dinamica Supponiamo di enumerare i vertici di G da 1 a n, cioè V={v 1, v 2, … v n }. Un cammino minimo k-vincolato da x a y è un cammino di costo minimo tra tutti i cammini da x a y che usano come vertici intermedi un sottoinsieme (anche vuoto) dei vertici {v 1, v 2, … v k }. x=v y=v 4 v2v2 v3v3 Tra x e y, il cammino minimo: 0-vincolato è lungo + 1-vincolato è lungo + 2-vincolato è lungo 8: ; 3-vincolato è lungo 6: ; 4-vincolato (ovvero senza vincoli) è lungo 6. Idea di Floyd e Warshall: calcolare cammini minimi k- vincolati per k=1,…, n 1

15 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 15 Relazioni tra distanze vincolate Lalgoritmo calcola d xy dal basso verso lalto, incrementando k da 0 a n Sia d xy il costo di un cammino minimo k-vincolato da x a y. Chiaramente, valgono le seguenti proprietà: –d xy = w(x,y) se (x,y) E, + altrimenti –d = d e d = d –d xy = d xy k 0 k-1 Per le proprietà di cui sopra e per la proprietà di minimalità dei sottocammini di cammini minimi, si ha: n kkk-1 xv k vkxvkxvkxvkx

16 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 16 Pseudocodice Tempo di esecuzione: (n 3 ) D: Come si confronta con lapplicazione ripetuta di Dijkstra? R: Utilizzando gli Heap di Fibonacci, n applicazioni dellalgoritmo di Dijkstra richiederanno tempo O(n (m+n log n))=O(nm+n 2 log n)=O(n 3 ). Quindi, Dijkstra è più efficiente. Tuttavia, si applica solo su un sottoinsieme delle istanze ammissibili per F&W.

17 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 17 Sommario grafico Universo dei grafi Grafi senza cicli negativi: BF e FW Grafi senza archi negativi: Dijkstra Grafi aciclici: ordinamento topologico

18 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 18 Approfondimento Applicare lalgoritmo di Floyd e Warshall al seguente grafo: s a c b d


Scaricare ppt "Capitolo 13 Cammini minimi: Algoritmo di Dijkstra; Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati."

Presentazioni simili


Annunci Google