La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati.

Presentazioni simili


Presentazione sul tema: "Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati."— Transcript della presentazione:

1 Capitolo 13 Cammini minimi: Bellman e Ford 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 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 © The McGraw - Hill Companies, srl 3 Algoritmo di Bellman e Ford (albero dei cammini minimi in grafi che non contengono cicli negativi)

4 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 4 Distanza fra vertici Ricorda: la distanza d xy tra due vertici x e y è il costo di un cammino minimo da x a y, o + se i due vertici non sono connessi Disuguaglianza triangolare: per ogni x, y e z V d xy d xz + d zy (luguaglianza sussiste quando esiste un cammino minimo da x a y che passa per z) Condizione di Bellman: per ogni arco (u,v) e per ogni vertice s, essendo d uv w(u,v), dalla disuguaglianza triangolare segue che: d sv d su + d uv d su + w(u,v)

5 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 5 Tecnica del rilassamento Partendo 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 ( vy denota un qualche cammino tra v e y):

6 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati proprietà intuitive del rilassamento le stime iniziali sono upper bound alle distanze nel grafo e ogni sequenza di rilassamenti preserva questa invariante. le stime posso solo decrementare quando una stima diventa esatta ed è quindi uguale alla distanza nel grafo, allora rilassare non ha alcun effetto rilassare in generale non inficia mai le stime Copyright © The McGraw - Hill Companies, srl 6

7 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 7 Ordine di rilassamento Supponiamo di dover trovare un cammino minimo tra s e v k. Sia sv k = tale cammino. Osserviamo che sv k potrebbe essere trovato eseguendo la seguente sequenza ottimale di rilassamenti: Problema: Come faccio ad individuare la giusta sequenza di rilassamenti (ovviamente a priori non conosco la sequenza di archi di sv k )?

8 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 8 Approccio di Bellman e Ford Esegue n-1 passate In ciascuna passata, per ogni arco del grafo, esegui il relativo passo di rilassamento rispetto alla distanza dalla sorgente s (si noti ad esempio che alla fine della prima passata, con questo approccio esaustivo sono sicuro di eseguire anche il rilassamento D sv 1 D ss + w(s,v 1 )) Dopo la j-esima passata, i primi j rilassamenti corretti sono stati certamente eseguiti (ovvero è stata trovata d sv j nonché la distanza tra s e tutti i nodi in G per i quali il cammino minimo da s è costituito da al più j archi) Alla fine della (n-1)-esima passata, ho trovato tutti i cammini minimi da s, poiché un cammino minimo contiene al più n-1 archi (il grafo non contiene cicli negativi e quindi esistono sempre cammini minimi semplici)

9 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 9 Pseudocodice Tempo di esecuzione: (n m) (con liste di adiacenza)

10 applicare lalgoritmo di Bellman e Ford al seguente grafo Copyright © The McGraw - Hill Companies, srl 10 A B CD E s #4 #5 #7 #2 #3 #1 #8 #6 w(e) # i: i-esimo arco considerato nel loop pricipale dellalg e

11 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati correttezza dellalgoritmo Copyright © The McGraw - Hill Companies, srl 11

12 Copyright © The McGraw - Hill Companies, srl 12 Dopo una sequenza qualsiasi di rilassamenti, vale D sv d sv per ogni v V Lemma 1 D sv D su + w(u,v) dim (per induzione sul # di rilassamenti) D ss =0 e D sv =+ per ogni v diverso da s può essere d ss <0?…no, altrimenti ci sarebbe un ciclo di peso negativo! allinizio generico rilassamento d su (per ipotesi induttiva) d uv d su + d uv d sv per disug. triangolare assunzione: G non ha cicli di peso negativo

13 Copyright © The McGraw - Hill Companies, srl Se ad un certo punto vale D sv =d sv, allora la stima D sv non sarà mai più cambiata Corollario 1 dim Segue dal Lemma 1 e dal fatto che le stime possono solo decrescere assunzione: G non ha cicli di peso negativo

14 Copyright © The McGraw - Hill Companies, srl 14 Se G=(V,E) non ha cicli negativi lalgoritmo termina con D sv =d sv per ogni v V Teorema D = D + w(v i-1,v i ) dim sv i quando rilasso arco (v i-1,v i ) poiché D sv d sv (Lemma 1) dobbiamo solo mostrare che a un certo punto vale D sv =d sv (che poi non sarà più modificata per il Corollario 1) caso base: (per ipotesi induttiva) = d + w(v i-1,v i ) = d per sottostruttura ottima sia p= un cammino minimo da s a v con il minimo numero di archi p è semplice (attenzione a cicli di costo 0!) k n-1 dimostro per induzione che dopo i passate dellalg, vale D = d sv i D ss =0 = d ss perché non ci sono cicli negativi caso induttivo: sv i sv i-1 sv i

15 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati e se il grafo ha dei cicli negativi (raggiungilibi da s)? Copyright © The McGraw - Hill Companies, srl 15 …posso modificare lalgoritmo di Bellman e Ford per verificarne lesistenza!

16 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Pseudocodice Tempo di esecuzione: (n m) (con liste di adiacenza) for each (u,v) E do if (D su +w(u,v)

17 17 sia un ciclo di peso negativo (raggiungibile da s) supponiamo per assurdo che lalgoritmo non se ne accorge condizione dellif dellultimo ciclo for è sempre falsa, ovvero: D + w(v i,v i+1 ) D sv i sv i+1 sommando su tutti gli indici i: i=1,2,…,k-1 D sv i + w(v i,v i+1 ) D sv i+1 i=1 k-1 i=1 k-1 i=1 k-1 i termini delle due sommatorie sono uguali w(v i,v i+1 ) 0 i=1 k-1 ma il ciclo era negativo: assurdo!

18 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati osservazione: –se conoscessi lordine in cui rilassare gli archi, potrei trovare le distanze dalla sorgente facendo una sola passata di rilassamenti domanda: posso conoscere questo ordine? –…a volte sì: per esempio se G è un DAG! Copyright © The McGraw - Hill Companies, srl 18

19 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 19 Algoritmo basato su ordinamento topologico (albero dei cammini minimi in grafi aciclici)

20 Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 20 Cammini minimi in grafi aciclici Tempo di esecuzione (liste di adiacenza): (n + m) Eseguo i rilassamenti in ordine topologico, da sinistra verso destra: infatti, poiché tutti gli archi sono orientati verso destra, le stime di distanza che mi lascio alle spalle sono esatte (non possono essere ulteriormente rilassate)!

21 Esempio DCAFBEG s DCAFBEG inizio: visito F visito C, A visito B visito D visito E visito G stime distanze 5

22 Esempio DCAFBEG DCAFBEG s distanze da s T : albero dei cammini minimi radicato in s


Scaricare ppt "Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati."

Presentazioni simili


Annunci Google