Algoritmi e Strutture Dati

Slides:



Advertisements
Presentazioni simili
Algoritmi e Strutture Dati
Advertisements

Algoritmi e Strutture Dati
Il problema della ricerca Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Strutture dati per.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Stesso approccio.
Capitolo 13 Cammini minimi: Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 8 Code con.
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Boruvka Algoritmi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 8 Code con.
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Visite di grafi Algoritmi e Strutture Dati. Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Alberi AVL (Adelson-Velskii.
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Un albero è un grafo.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Alberi AVL (Adelson-Velskii.
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati.
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Trovare il percorso minimo da b ad ogni altro vertice
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 K 4 è planare? Sì!
Algoritmi e Strutture Dati
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmi di Prim e di Borůvka Algoritmi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Strutture dati per.
Capitolo 13 Cammini minimi: Algoritmo di Floyd e Warshall Algoritmi e Strutture Dati.
Capitolo 13 Cammini minimi: Ordinamento topologico Algoritmi e Strutture Dati.
Capitolo 8 Code con priorità Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl Capitolo 8 Code con.
Capitolo 12 Minimo albero ricoprente Algoritmi e Strutture Dati.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Capitolo 10 Tecniche algoritmiche Algoritmi e Strutture Dati.
Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Algoritmi e Strutture Dati.
Capitolo 13 Cammini minimi Algoritmi e Strutture Dati.
Capitolo 11 Visite di grafi Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati.
Capitolo 13 Cammini minimi: Algoritmo di ordinamento topologico, di Dijkstra, e di Floyd e Warshall Algoritmi e Strutture Dati.
Capitolo 13 Cammini minimi Algoritmi e Strutture Dati.
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati.
Capitolo 13 Cammini minimi: algoritmo di Dijkstra Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Cammini minimi fra tutte le coppie:
Cammini minimi in grafi:
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmo di Prim Algoritmi e Strutture.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Capitolo 12 Minimo albero ricoprente: Algoritmo di Prim Algoritmi e Strutture.
Capitolo 12 Minimo albero ricoprente: Algoritmo di Kruskal Algoritmi e Strutture Dati.
Capitolo 11 Grafi e visite di grafi Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Capitolo 13 Cammini minimi: algoritmo di Dijkstra Algoritmi e Strutture Dati.
Transcript della presentazione:

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

Punto della situazione 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 quest’ultima è la più efficiente delle implementazioni presentate, poiché: m + n log n = O(n2) (liste/array non ord.), in quanto m = O(n2) e n log n = o(n2) 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) 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 basato sull’ordinamento topologico: albero dei cammini minimi in grafi diretti aciclici. Complessità Θ(n+m) (con liste di adiacenza). Copyright © 2004 - The McGraw - Hill Companies, srl

distanza fra tutte le coppie: soluzioni semplici grafi non pesati: eseguo n volte visita BFS: tempo O(mn) grafi con pesi non negativi: eseguo n volte Dijkstra: tempo: O(mn+n2 log n) grafi con pesi qualsiasi (senza cicli negativi) eseguo n volte Bellman-Ford tempo: O(mn2) Copyright © 2004 - The McGraw - Hill Companies, srl

Algoritmo di Floyd e Warshall (cammini minimi tra tutte le coppie di nodi per tutti i grafi che non contengono cicli negativi) Copyright © 2004 - The McGraw - Hill Companies, srl

Approccio Elegante applicazione della tecnica della programmazione dinamica Supponiamo di enumerare i vertici di G da 1 a n, cioè V={v1, v2, … vn}. 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 Ik={v1, v2, … vk}. v2 Tra x e y, il cammino minimo: 0-vincolato è lungo + 1-vincolato è lungo + 2-vincolato è lungo 8: <x,v2,y>; 3-vincolato è lungo 5: <x,v2,v3,y>; 4-vincolato (ovvero senza vincoli) è lungo 5. 1 7 x=v1 1 y=v4 4 3 v3 Idea di Floyd e Warshall: calcolare cammini minimi k-vincolati per k=1,…, n Copyright © 2004 - The McGraw - Hill Companies, srl

Relazioni tra distanze vincolate k Sia dxy il costo di un cammino minimo k-vincolato da x a y. Chiaramente, valgono le seguenti proprietà: dxy= w(x,y) se (x,y)E, +∞ altrimenti d = d e d = d dxy= dxy k-1 k k-1 k xvk xvk vkx vkx n Per le proprietà di cui sopra e per la proprietà di minimalità dei sottocammini di cammini minimi, si ha: L’algoritmo calcola dxy dal basso verso l’alto, incrementando k da 0 a n Copyright © 2004 - The McGraw - Hill Companies, srl

Pseudocodice Tempo di esecuzione: (n3) (sia con liste di adiacenza che con matrice di adiacenza) D: Come si confronta con l’applicazione ripetuta di Dijkstra? R: Utilizzando gli Heap di Fibonacci, n applicazioni dell’algoritmo di Dijkstra richiederanno tempo O(n (m+n log n)) = O(n m+n2 log n) = O(n3). Quindi, Dijkstra è più efficiente. Tuttavia, si applica solo su un sottoinsieme delle istanze ammissibili per F&W. Copyright © 2004 - The McGraw - Hill Companies, srl

e se G contiene un ciclo di peso negativo posso accorgermene? Esercizio: pensarci… Copyright © 2004 - The McGraw - Hill Companies, srl

Applicare l’algoritmo di Floyd e Warshall al seguente grafo: v1 5 -1 v2 v3 3 -4 5 v4 v5 -1 Copyright © 2004 - The McGraw - Hill Companies, srl

Soluzione Posso applicare F&W? v1 v2 v4 v3 v5 5 -1 3 -4 Posso applicare F&W? Sì, non ci sono cicli negativi! Inizializziamo la matrice delle distanze: D0 = D1 = D2 = D3 = D4 = D5 = Copyright © 2004 - The McGraw - Hill Companies, srl

Sommario grafico Universo dei grafi Grafi senza cicli negativi: BF e FW Grafi aciclici: ordinamento topologico Grafi senza archi negativi: Dijkstra Copyright © 2004 - The McGraw - Hill Companies, srl