Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
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)
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.