La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Cammini minimi tra tutte le coppie

Presentazioni simili


Presentazione sul tema: "Cammini minimi tra tutte le coppie"— Transcript della presentazione:

1 Cammini minimi tra tutte le coppie

2 Cammini minimi tra tutte le coppie
Dato un grafo (orientato o non orientato) G = (V,E) con funzione di peso w: E  R, trovare per ogni coppia di vertici u,v  V il minimo peso di un cammino da u a v. Verrà calcolata anche una matrice di predecessori (uv) dove uv è NIL se u=v o se non c’è un cammino da u a v, altrimenti è un predecessore di v su di un cammino minimo da u. Il sottografo indotto dall’i-esima riga della matrice  sarà un albero di cammini minimi con radice in i.

3 Algoritmo di Floyd-Warshall
E’ un algoritmo di programmazione dinamica, può gestire archi di peso negativo ma si assume che non ci siano cicli negativi. Idea: ds,t(i): cammino minimo da s a t contenente solo i vertici v1, ..., vi ds,t(0) = w(s,t)

4 Algoritmo di Floyd-Warshall: idea
ds,t(i): cammino minimo da s a t contenente solo i vertici v1, ..., vi ds,t(0) = w(s,t) w(s,t) if k = 0 min{ds,t(k-1), ds,k(k-1) + dk,t(k-1)} if k > 0 ds,t(k) =

5 Algoritmo di Floyd-Warshall
Floyd-Warshall(W) 1 n=rows[W] 2 D(0)=W 3 for k = 1 to n do 2 for i = 1 to n do 3 for j = 1 to n do 4 dij(k) = min(dij(k-1), dik(k-1) + dkj(k-1)) 5 return D(n)

6 Algoritmo di Floyd-Warshall: esempio
2 4 3 7 1 3 8 -4 1 7 4 2 -5 6 1 3 8 2 -4 -5 5 4 6

7 Algoritmo di Floyd-Warshall: esempio
3 8 -4 1 7 4 2 -5 6 1 2 3 4 5

8 Algoritmo di Floyd-Warshall: esempio
3 8 -4 1 7 4 2 5 -5 -2 6 1 2 3 4 5

9 Algoritmo di Floyd-Warshall: esempio
3 8 4 -4 1 7 5 11 2 -5 -2 6 1 2 3 4 5

10 Algoritmo di Floyd-Warshall: esempio
3 8 4 -4 1 7 5 11 2 -1 -5 -2 6 1 2 3 4 5

11 Algoritmo di Floyd-Warshall: esempio
3 -1 4 -4 1 7 5 2 -5 -2 8 6 1 4 2 3 5

12 Algoritmo di Floyd-Warshall: esempio
3 -1 2 -4 1 7 4 5 -5 -2 8 6 1 4 5 2 3

13 Algoritmo di Floyd-Warshall: complessità
Determinata dei tre cicli for. Ogni esecuzione dell’istruzione interna è O(1), quindi: T(V,E) = (n3) = (V3)


Scaricare ppt "Cammini minimi tra tutte le coppie"

Presentazioni simili


Annunci Google