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

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

Embed Size (px)

Citation preview

Page 1: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

Capitolo 13Cammini minimi:Bellman e Ford

Algoritmi e Strutture Dati

Page 2: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl2

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)

Page 3: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl3

Algoritmo di Bellman e Ford (albero dei cammini minimi in grafi che

non contengono cicli negativi)

Page 4: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl4

Distanza fra vertici• Ricorda: la distanza dxy 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

dxy ≤ dxz + dzy (l’uguaglianza 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 duv ≤ w(u,v), dalla disuguaglianza triangolare segue che:

dsv ≤ dsu + duv ≤ dsu + w(u,v)

Page 5: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl5

Tecnica del rilassamento• Partendo da stime per eccesso delle distanze

Dxy ≥ dxy 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):

Page 6: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

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 © 2004 - The McGraw - Hill Companies, srl6

Page 7: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl7

Ordine di rilassamento Supponiamo di dover trovare un cammino minimo tra s e vk. Sia svk

=< s,v1,v2,… ,vk > tale cammino. Osserviamo che svk

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 svk

)?

Page 8: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl8

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 Dsv1

Dss + w(s,v1))

• Dopo la j-esima passata, i primi j rilassamenti corretti sono stati certamente eseguiti (ovvero è stata trovata dsvj

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)

Page 9: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl9

Pseudocodice

Tempo di esecuzione: (n m)(con liste di adiacenza)

Page 10: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

applicare l’algoritmo di Bellman e Ford al seguente grafo

Copyright © 2004 - The McGraw - Hill Companies, srl10

A

B

C D

E

s

-1

4

3

5

2

-31

2#4

#5

#7

#2

#3

#1

#8

#6

w(e)# i: i-esimo arco considerato nel looppricipale dell’alg

e

Page 11: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

correttezza dell’algoritmo

Copyright © 2004 - The McGraw - Hill Companies, srl11

Page 12: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

Copyright © 2004 - The McGraw - Hill Companies, srl12

Dopo una sequenza qualsiasi di rilassamenti, vale Dsvdsv per ogni vV

Lemma 1

Dsv Dsu + w(u,v)

dim (per induzione sul # di rilassamenti)

Dss=0 e Dsv=+∞ per ogni v diverso da s

può essere dss<0? …no, altrimenti ci sarebbe un ciclo di peso negativo!

all’inizio

generico rilassamento

dsu (per ipotesi induttiva)

duv

dsu + duv dsv

per disug. triangolare

assunzione: G non ha cicli di peso negativo

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

Copyright © 2004 - The McGraw - Hill Companies, srl

Se ad un certo punto vale Dsv=dsv , allora la stima Dsv 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

Page 14: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

Copyright © 2004 - The McGraw - Hill Companies, srl14

Se G=(V,E) non ha cicli negativi l’algoritmo termina con Dsv=dsv per ogni vV

Teorema

D = D + w(vi-

1,vi)

dim

svi

quando rilasso arco (vi-1,vi)

poiché Dsvdsv (Lemma 1) dobbiamo solo mostrare che a un certo punto vale Dsv=dsv (che poi non sarà più modificata per il Corollario 1)

caso base:

(per ipotesi induttiva)

= d + w(vi-1,vi) = d

per sottostruttura ottima

sia p=<s=v0,v1, …, vk=v> un cammino minimo da s a v con il minimo numero di archi

p è semplice (attenzione a cicli di costo 0!)

kn-1

dimostro per induzione che dopo i passate dell’alg, vale D = dsvi

Dss=0 = dss perché non ci sono cicli negativicaso induttivo:

svi svi-1svi-1 svi

Page 15: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

e se il grafo ha dei cicli negativi (raggiungilibi da

s)?

Copyright © 2004 - The McGraw - Hill Companies, srl15

…posso modificare l’algoritmo di Bellman e Ford per verificarne l’esistenza!

Page 16: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

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 (Dsu+w(u,v)<Dsv) then return “esiste ciclo negativo” return D

Correttezza

algoritmo

se G non ha cicli negativi, nell’ultimo ciclo for

la condizione dell’if non è mai soddistatta

ma se G ha un ciclo negativo (raggiungibile

da s) l’algoritmo se ne accorge?

Page 17: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

17

sia <v1,v2, …, vk-1, vk=v1> un ciclo di peso negativo (raggiungibile da s)supponiamo per assurdo che l’algoritmo non se ne accorge

condizione dell’if dell’ultimo ciclo for è sempre falsa, ovvero:

D + w(vi,vi+1) D

svi svi+

1

sommando su tutti gli indici i:

i=1,2,…,k-1

Dsvi+ w(vi,vi+1) Dsvi+

1

i=1

k-1

i=1

k-1

i=1

k-1

i termini delle due sommatorie sono uguali

w(vi,vi+1) 0 i=1

k-1ma il ciclo era negativo:

assurdo!

Page 18: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

• osservazione: – se conoscessi l’ordine 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 © 2004 - The McGraw - Hill Companies, srl18

Page 19: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl19

Algoritmo basato su

ordinamento topologico(albero dei cammini minimi

in grafi aciclici)

Page 20: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati

Copyright © 2004 - The McGraw - Hill Companies, srl20

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)!

Page 21: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

Esempio

DC AF B E Gs

10

-2

0

-12 -10 -8 4 4

7

14

-3

DC AF B E G

+∞ +∞ +∞ +∞ +∞ +∞

0 +∞ +∞ 5 -2 +∞ 10

0 +∞ +∞ 5 -2 +∞ 100 +∞ +∞ 5 -3 +∞ 10

0 +∞ +∞ 5 -3 1 4

0 +∞ +∞ 5 -3 1 4

0 +∞ +∞ 5 -3 1 4

inizio:

visito F

visito C, Avisito B

visito D

visito E

visito G

stime distanze

5

Page 22: Capitolo 13 Cammini minimi: Bellman e Ford Algoritmi e Strutture Dati

Esempio

DC AF B E G

DC AF B E Gs

10

-2

-12 -10 -8 4 4

7

14

-3

5

0 +∞ +∞ 5 -3 1 4distanze

da s

T: alberodei cammini

minimi radicato in s