Você está na página 1de 12

1

Algoritmo de Floyd-Warshall 13 de Marzo de 2012 Material del curso de Logstica

Algoritmo de Floyd-Warshall
A partir de la matriz de distancias entre nodos de una red se busca obtener la matriz de distancia mnima entre cualquier par de nodos. Tambin se quiere calcular todas las rutas de distancia mnima entre cualquier par de nodos.

Algoritmo de Floyd-Warshall
En el grafo (V,E) V = Conjunto de vrtices. E = Conjunto de arcos dirigidos entre vrtices. w(i,j) = peso del arco desde i hasta j , con i, j E.

Algoritmo de Floyd-Warshall
Si n es el nmero de nodos de la red, en la fase de inicializacin del algoritmo, el grafo est representado por una matriz n x n de pesos calculados como:

0 i, j

si i si i

j j con i , j E j con i E o j E

w( i , j ) si i

Las matrices D(k) guardan las distancias mnimas entre parejas de nodos y la matriz pred guarda un nodo intermedio entre parejas de nodos.

Ejemplo

Inicializacin

MATRIZ DISTANCIAS
A 4 2 B 4 3 C 2 1 2 D 1 3 2 E 2 4 F 2 4 -

MATRIZ RECORRIDOS
A A A A A A B B B B B B C C C C C C D D D D D D E E E E E E F F F F F F -

A B C D E F

A B C D E F

Iteracin A

MATRIZ DISTANCIAS
A 4 2 B 4 3 C 2 1 2 D 1 3 2 E 2 4 F 2 4 -

MATRIZ RECORRIDOS
A A A A A A B B B B B B C C C C C C D D D D D D E E E E E E F F F F F F -

A B C D E F

A B C D E F

Iteracin B

MATRIZ DISTANCIAS
A 4 2 B 4 6 3 C 2 6 1 2 D 1 3 2 E 2 4 F 2 4 -

MATRIZ RECORRIDOS
A A A A A A B B A B B B C C A C C C D D D D D D E E E E E E F F F F F F -

A B C D E F

A B C D E F

Iteracin C

MATRIZ DISTANCIAS
A 4 2 7 B 4 6 3 C 2 6 1 2 D 1 3 2 E 2 4 F 2 4 -

MATRIZ RECORRIDOS
A A A B A A B B A B B B C C A C C C D D D D D D E E E E E E F F F F F F -

A B C D E F

A B C D E F

10

Iteracin F (Fin)

MATRIZ DISTANCIAS
A 4 2 3 4 5 B 4 6 3 8 5 C 2 6 1 2 3 D 3 7 1 3 2 E 4 8 2 3 4 F 5 9 3 2 4 -

MATRIZ RECORRIDOS
A A A C C D B B A B C D C C A C C D D C C D D D E C C E C E F D D D F F -

A B C D E F

A B C D E F

11

Solucin Cmo se interpreta?

Para ir del nodo A al nodo J: la distancia mnima es 9. un recorrido ptimo es: B-AC-D-F. Este recorrido se recupera analizando la matriz de predecesores:
Entre B y F es D Entre B e D es C Entre B y C es A Entre B y A es

MATRIZ RECORRIDOS
A A A C C D B B A B C D C C A C C D D C C D D D E C C E C E F D D D F F -

A B C D E F

12

Algoritmo de Floyd-Warshall

Floyd-Warshall ( ,n) { for i=1 to n do for j=1 to n do { D0[i,j]= [i,j]; pred[i,j]=nil; } for k=1 to n do for i=1 to n do for j=1 to n do if ( D(k-1)[i,k]+ D(k-1)[k,j] < D(k-1)[i,j] ) {D(k)[i,j] = D(k-1)[i,k]+ D(k-1)[k,j] ; pred[i,j] = k;} else D(k)[i,j] = D(k-1)[i,j]; return D(n)[1,,n, 1,,n]; }

Você também pode gostar