Вы находитесь на странице: 1из 30

1

Algoritmo de Floyd
Optimizacin en Ingeniera II
Eliseo Fustamante Blanco

Algoritmo de Floyd
El algoritmo de Floyd es mas general que el de Dijkstra, ya que determina la
ruta mas corta entre dos nodos cualquiera de la red.
El algoritmo representa una red de n nodos como una matriz cuadrada de
orden n, la llamaremos matriz C. De esta forma, el valor de Cij representa el
coste de ir del desde el nodo i al nodo j, inicialmente en caso de no existir
un arco entre ambos, el valor de Cij ser 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 de Dij representara el nodo predecesor a j en el camino
mnimo desde i hasta j.
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.

Algoritmo de Floyd

Los pasos para la aplicacin del algoritmo de Floyd:


Formar las matrices C y D.
Se toma k.
Se selecciona la fila y la columna k de la matriz C y entonces para i y j 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 optimo para ir de un vrtice a otro

Ejemplo 1

Tenemos el siguiente grafo direccional:


B
5
A

3
6

Ejemplo 1

Se generan las siguientes tablas

Pesos

Recorrido

Ejemplo 1

Tomamos la primera fila y la primera columna

Ejemplo 1

K=A

En la base a la fila y columna de A, tenemos que sumar los valores para dar con el valor
mnimo.
Tenemos que tener en cuenta que un valor n + =
En Cij tenemos:
C1,4 +C2,1=6+5=11=C2,4. En la tabla D, se cambia D2,4 por A.

C1,4+C3,1=6+1=7=C3,4, se cambia D3,4 por A.


Las sumas con C4,1 y C5,1 no se realizan porque tienen

11

Ejemplo 1

Filas y columnas de B.
C

11

Ejemplo 1

K=B

Vemos que la relacin esta en forma de cruz. Nos enfocaremos en las


operaciones que si se pueden realizar.
C2,1 +C4,1=5+3=8=C4,1. La celda D4,1 se vuelve B.
Un caso especial es:
C2,4 +C4,2=11+3=14. Sin embargo se declaro que C4,4 nulo por lo que sigue
as.
El resto de valores sigue como por el momento

11

Ejemplo 1

10

Fila y columna de C
C

11

Ejemplo 1

11

K=C

Vemos que la relacin esta en forma de cruz. Nos enfocaremos en las


operaciones que si se pueden realizar.

C3,1 +C5,3=1+2=3=C5,1. La celda D5,1 se vuelve C.


C3,4 +C5,3=7+2=9=C5,4. Sin embargo, el valor resultante es mayor que el valor
que se encuentra ya en la celda por lo que no se realiza ningn cambio.
Esto ocurre por que tenemos que buscar el valor mnimo.

11

Ejemplo 1

12

Fila y columna de D
C

11

13

Ejemplo 1

K=D

Vemos que la relacin esta en forma de cruz. Nos enfocaremos en las


operaciones que si se pueden realizar.
C4,2 +C1,4=3+6=9=C1,2. La celda D1,2 se vuelve D.
C4,2 +C3,5=3+7=10=C3,2. La celda D3,2 se vuelve D.
C4,2 +C5,4=3+4=7=C5,2. La celda D5,2 se vuelve D.
El valor de C4,1(8)+C5,4(4) dan un resultado de 12, pero no se procesa al ser
mayor al valor C5,1(3, al igual que en el caso de C4,1(8)+C2,4(11).

10

11

Ejemplo 1

14

Fila y columna de E
C

10

11

Ejemplo 1

15

K=E

Llegamos al punto en que termina el proceso E. esto sucedi debido a que


los valores de la fila E son valores infinitos, por lo que cualquier operacin
ahora es nula.

10

11

Ejemplo 1

16

Finalmente tenemos.
C

10

11

Ejemplo 1

17

Pero:
Por qu la fila E se quedo igual con los valores infinitos? Por qu en la fila
C solo cambio una celda?
Para entender el porque de estas incgnitas, veamos el grafico
nuevamente:
B

Grafico:

Como podemos ver, el vrtice E solo


recibe pero no enva ningn valor, lo cual
explica que tenga valores infinitos.

El vrtice C solo enva un valor 2 a E,


siendo un nico valor valido.

1
C

3
6

D
4

Ejemplo 1

18

Grafico y tabla:
C

10

11

B
5
A

3
6

D
4

1
C

Ejemplo 2

19

Aplicar el Algoritmo de Floyd sobre el siguiente grafico para obtener las rutas mas
cortas en cada dos nodos. El arco (3,5) es direccional, de manera que no esta
permitido ningn trafico del nodo 5 al nodo 3. Todos los dems arcos permiten el
trafico en ambas direcciones.
5

6
15
1
10
3

Ejemplo 2

20

Se generan las siguientes tablas

Matriz C

Matriz D

10

10

15

Ejemplo 2

21

Tomamos la primera fila y la primera columna

10

10

15

Ejemplo 2

22

K=1
En la base a la fila y columna de 1, tenemos que sumar los valores para dar
con el valor mnimo.
En Cij tenemos:
C1,2 +C3,1=3+10=13=C2,3. En la tabla D, se cambia D2,3 por 1.
C1,3 +C2,1=10+3=13=C3,2. En la tabla D, se cambia D3,2 por 1.

10

13

10

13

15

Ejemplo 2

23

Tomamos la segunda columna


C

10

13

10

13

15

Ejemplo 2

24

K=2
Vemos que la relacin esta en forma de cruz. Nos enfocaremos en las
operaciones que si se pueden realizar.
En Cij tenemos:
C1,2 +C2,4=3+5=8=C1,4. En la tabla D, se cambia D1,4 por 2.
C4,2 +C2,1=5+3=8=C4,1. En la tabla D, se cambia D4,1 por 2.

10

13

10

13

15

Ejemplo 2

25

Tomamos la tercera fila


C

10

13

10

13

15

Ejemplo 2

26

K=3
Vemos que la relacin esta en forma de cruz. Nos enfocaremos en las
operaciones que si se pueden realizar.
C1,3 +C3,5=10+15=25=C1,5. En la tabla D, se cambia D1,5 por 3.
C2,4+C3,5=13+15=28=C2,5. En la tabla D, se cambia D2,5 por 3.
C

10

25

13

28

10

13

15

Ejemplo 2

27

Tomamos la curta fila


C

10

25

13

28

10

13

15

Ejemplo 2

28

K=4
Vemos que la relacin esta en forma de cruz. Nos enfocaremos en las
operaciones que si se pueden realizar.
C1,4 +C4,5=8+4=12=C1,5. En la tabla D, se cambia D1,5 por 4.
C2,4+C4,3=5+6=11=C2,3. En la tabla D, se cambia D2,3 por 4.
C2,4+C4,5=5+4=9=C2,5. En la tabla D, se cambia D2,5 por 4.
C3,4+C4,2=6+5=11=C3,2. En la tabla D, se cambia D3,2 por 4.
C3,4+C4,4=6+4=10=C3,5. En la tabla D, se cambia D3,5 por 4.
C4,1+C5,4=8+4=12=C5,1. En la tabla D, se cambia D5,1 por 2.
C4,2+C5,4=5+4=9=C5,2. En la tabla D, se cambia D5,2 por 4.
C4,3+C5,4=6+4=10=C5,3. En la tabla D, se cambia D5,3 por 4.
C

10

12

11

10

11

10

12

10

Ejemplo 2

29

Tomamos la ultima fila

Al hacer K=5 ya no cambiamos nada

10

12

11

10

11

10

12

10

Ejemplo 2

30

Fin del proceso las matrices quedan as:


C

10

12

11

10

11

10

12

10

Las matrices finales C y D contienen toda la informacin necesaria para


determinar la ruta mas corta entre dos nodos cualquiera de la red.

Вам также может понравиться