Sunteți pe pagina 1din 9

EL ALGORITMO DE FLOYD

JUAN GABRIEL RODRGUEZ JIMENEZ

UNIVERSIDAD PEDAGGICA Y TECNOLGICA DE COLOMBIA


FACULTAD DE INGENIERA
ESCUELA DE TRANSPORTE Y VAS
REDES DE TRANSPORTE
TUNJA
2015

EL ALGORITMO DE FLOYD

JUAN GABRIEL RODRGUEZ JIMENEZ


53. 201120214

CONSULTA

INGENIERO:
JUAN CARLOS POVEDA D OTERO
DOCENTE

UNIVERSIDAD PEDAGGICA Y TECNOLGICA DE COLOMBIA


FACULTAD DE INGENIERA
ESCUELA DE TRANSPORTE Y VAS
REDES DE TRANSPORTE
TUNJA
2015

ALGORITMO DE FLOYD

El Algoritmo de Floyd encuentra el camino ms corto entre todos los vrtices de la


digrfica. Sea la grfica dirigida G = (V, A) donde cada arco u

tiene

asociado un peso. El algoritmo de Floyd permitir encontrar el camino ms corto


entre cada par ordenado u y v.
La matriz de distancias sirve como punto de partida para este algoritmo. Se
realizan k iteraciones sobre el matiz buscando el camino ms corto; por lo tanto
en la k-stima iteracin, M [ i, j ] tendr el camino de menor costo para llegar de i
a j, pasando por un nmero de vrtices menor a k, el cual se calculara segn la
siguiente expresin :

Mk [ i, j ] min=

Mk-1 [ i, j ]
Mk-1 [ i, k ] + Mk-1 [ k, j ]

Se elegir el camino ms corto entre el valor obtenido en la iteracin (k 1) y el


que resulta de pasar por el vrtice k. En el algoritmo se usa la matriz de costos, M,
donde

M [ i, j ] ser igual el costo de ir a i a j, a un valor muy grande () sino

existe camino de i a j, o a cero si i = j.1


El algoritmo de Floyd es ms general que el de Dijkstra, ya que determina la ruta
ms corta entre dos nodos cualquiera de la red.
1 Scribd.Algoritmo de Floyd .[en lnea] .<
https://es.scribd.com/doc/53314169/ALGORITMO-DE-FLOYD> citado en 4 de
abril de 2015

El algoritmo representa una red de n nodos como una matriz cuadrada de


orden n, la llamaremos matriz C. De esta forma, el valor Cij representa el coste de
ir desde el nodo i al nodo j, inicialmente en caso de no existir un arco entre ambos,
el valor Cijser infinito.

Definiremos otra matriz D, tambin cuadrada de orden n, cuyos elementos


van a ser los nodos predecesores en el camino hacia el nodo origen, es decir, el
valor Dij representar el nodo predecesor a j en el camino mnimo desde i hasta j.
Inicialmente se comienza con caminos de longitud 1, por lo que Dij = i.

Las diagonales de ambas matrices representan el coste y el nodo


predecesor para ir de un nodo a si mismo, por lo que no sirven para nada, estarn
bloqueadas.
Los pasos a dar en la aplicacin del algoritmo de Floyd son los siguientes:

Formar las matrices iniciales C y D.

Se toma k=1.

Se selecciona la fila y la columna k de la matriz C y entonces, para i y j,


con ik, jk eij, hacemos:
Si (Cik + Ckj) < Cij Dij = Dkj y Cij = Cik + Ckj
En caso contrario, dejamos las matrices como estn.

Si k n, aumentamos k en una unidad y repetimos el paso anterior, en caso


contrario paramos las iteraciones.

La matriz final C contiene los costes ptimos para ir de un vrtice a otro,


mientras que la matriz D contiene los penltimos vrtices de los caminos ptimos
que unen dos vrtices, lo cual permite reconstruir cualquier camino ptimo para ir
de un vrtice a otro.2

2 Blogs.com. Teoras explicitas y ejemplos .Algoritmo de Floyd.[en lnea].<


http://algoritmodefloyd.blogspot.com/> .[citado el 4 de abril del 2015]

EJEMPLO DE ALGORITMO DE FLOYD

Ejemplo:
Veamos un ejemplo de cmo trabaja el algoritmo:
Sea el grafo:
1

8
2

4
4

2
1

Matriz
Peso

de

D0 1 2 3 4
1

3 4
2
4

Matriz
Intermedios

Nodos

S0 1 2 3 4
1

2 3

3 4
2 1
4
3 1 2
4 1 2 3

Como vemos ac, el algoritmo no permite que existan nodos


que apunten a s mismos, ya que las diagonales quedan
inhabilitadas.
La matriz D0 se llena con los pesos de cada camino que
representa la matriz[i][j] del ejemplo, como vemos, si no existe
conexin entre
lo
los nodos, se completa con el smbolo
que reprenda que no existe la conexin entre los nodos, por
lo tanto el peso que trae pasar por ah no se puede tasar.

La matriz S0 se llena con los nodos intermedios entre un par de


nodos, en este caso suponemos que no existe otro camino
entre los nodos que ir directamente hacia ellos.
Luego de completar las primeras matrices, comenzamos
fijando una fila y una columna pivote, para ver todos los
caminos que existen entre el nodo k y todos los dems,
cualquier cambio que ocurra en la matriz de peso, incurrir en
un cambio en la matriz de nodos intermedios, asumiendo que
localmente el nodok es el de menor peso en esa iteracin.

D0 1 2 3 4
1

3 4
2
4

S0 1 2 3 4
2 3

3 4
2 1
4
3 1 2
4 1 2 3

Fijamos la fila 1, entonces k=1, y comenzamos a revisar el algoritmo


preguntando si

Matriz de Peso [i][k]+ Matriz de Peso[k][j]< Matriz de

Peso[i][j], si es menor se cambia si no se mantiene. As obtenemos D1 y S1.

D1 1 2 3 4
1
2

3 4
2 1
1
3 1 1
4 1 2 3

3 4 12
2 9
4

S1 1 2 3 4
2 3

Como se puede ver en las posiciones 3,2 y 3,5 de la matriz de peso, hubo
cambios y como habamos fijado k =1, entonces en las mismas posiciones se
generarn cambios en la matriz de nodos intermedios. Ahora fijamos k =2 y
seguimos con el procedimiento hasta llegar a k =4, que es el nmero total de
nodos en el grafo.

D1 1 2 3 4
1

3 4
2 1
1
3 1 1
4 1 2 3

3 4 12
2 9
4
D2 1 2 3 4
1

8 9

3 4 12
2 3
4

S1 1 2 3 4
2 3

S2 1 2 3 4
2 2

3 4
2 1
1
3 1 1
4 1 2 2

Como vemos en las posiciones 1,3 y 4,3 de la matriz de peso, hubo cambios y
como habamos fijado k =2, entonces en las mismas posiciones se generarn
cambios en la matriz de nodos intermedios. Ahora fijamos k =3 y seguimos con el
procedimiento hasta llegar a k =4, que es el nmero total de nodos en el grafo.

D2 1 2 3 4
1

8 9

3 4 12
2 3
4

S2 1 2 3 4
2 2

3 4
2 1
1
3 1 1
4 1 2 2

D3 1 2 3 4

S3 1 2 3 4

8 9

1
2 5
3 4 12
4 7 2 3

3 3
2 3
1
3 1 1
4 3 2 2

2 2

Como vemos en las posiciones 2,1 ; 2,4 y 4,1 de la matriz de peso, hubo cambios
y como habamos fijado k =3, entonces en las mismas posiciones se generarn
cambios en la matriz de nodos intermedios. Ahora fijamos k =4 y seguimos con el
procedimiento hasta llegar a k =4, que es el nmero total de nodos en el grafo.

D3 1 2 3 4

S3 1 2 3 4

8 9

1
2 5
3 4 12
4 7 2 3

3 3
2 3
1
3 1 1
4 3 2 2

2 2

Como vemos en las posiciones 1,2; 1,3 y 3,2 de la matriz de peso,


hubo cambios y como habamos fijado k =4, entonces en las mismas
posiciones se generarn cambios en la matriz de nodos intermedios,
y como ya completamos las 4 iteraciones, estas son las matrices con

Como vemos en las posiciones 1,2; 1,3 y 3,2 de la matriz de peso, hubo cambios y
como habamos fijado k =4, entonces en las mismas posiciones se generarn
cambios en la matriz de nodos intermedios, y como ya completamos las 4
iteraciones, estas son las matrices con los pesos ptimos y sus respectivos
caminos. 3

3 Wikispaces. C.M.-Algoritmo de Floyd-Warshall.[en lnea]< http://grafoscaminosminimos.wikispaces.com/C.M.+-+Algoritmo+de+Floyd-Warshall> .


[citado en 4 de abril de 2015]

S-ar putea să vă placă și