Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoAlda Vinci Modificato 11 anni fa
1
Capitolo 13 Cammini minimi: Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati
2
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 2 Punto della situazione Algoritmo basato sullordinamento topologico: albero dei cammini minimi in grafi diretti aciclici. Complessità Θ(n+m) (con liste di adiacenza). Algoritmo di Bellman&Ford: albero dei cammini minimi per tutti i grafi che non contengono cicli negativi. Complessità Θ(n·m) (con liste di adiacenza). Algoritmo di Dijkstra: albero dei cammini minimi per tutti i grafi che non contengono archi di peso negativo. Complessità O(m + n log n) (con Heap di Fibonacci). Si noti che questultima è la più efficiente delle implementazioni presentate, poiché: m + n log n = O(n 2 ) (liste/array non ord.), in quanto m = O(n 2 ) e n log n = o(n 2 ) m + n log n = o(n m) (liste/array ord.), in quanto m = o(n m) e n log n = o(n m) m + n log n = O(m log n) (heap binari/binomiali), in quanto m = o(m log n) e n log n = O(m log n)
3
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 3 Algoritmo di Floyd e Warshall (cammini minimi tra tutte le coppie di nodi per tutti i grafi che non contengono cicli negativi)
4
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 4 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 I k ={v 1, v 2, … v k }. x=v 1 71 4 3 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 5: ; 4-vincolato (ovvero senza vincoli) è lungo 5. Idea di Floyd e Warshall: calcolare cammini minimi k- vincolati per k=1,…, n 1
5
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 5 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
6
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 6 Pseudocodice Tempo di esecuzione: (n 3 ) (sia con liste di adiacenza che con matrice di adiacenza) 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(n m+n 2 log n) = O(n 3 ). Quindi, Dijkstra è più efficiente. Tuttavia, si applica solo su un sottoinsieme delle istanze ammissibili per F&W.
7
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 7 Sommario grafico Universo dei grafi Grafi senza cicli negativi: BF e FW Grafi senza archi negativi: Dijkstra Grafi aciclici: ordinamento topologico
8
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 8 Approfondimento Applicare lalgoritmo di Floyd e Warshall al seguente grafo: v1v1 v2v2 v4v4 v3v3 v5v5 5 3 -4 5
9
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © 2004 - The McGraw - Hill Companies, srl 9 Soluzione Posso applicare F&W? Sì, non ci sono cicli negativi! Inizializziamo la matrice delle distanze: v1v1 v2v2 v4v4 v3v3 v5v5 5 3 -4 5 D 0 = D 2 = D 1 = D 3 = D 4 = D 5 =
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.