Академический Документы
Профессиональный Документы
Культура Документы
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
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
3
6
Ejemplo 1
Pesos
Recorrido
Ejemplo 1
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.
11
Ejemplo 1
Filas y columnas de B.
C
11
Ejemplo 1
K=B
11
Ejemplo 1
10
Fila y columna de C
C
11
Ejemplo 1
11
K=C
11
Ejemplo 1
12
Fila y columna de D
C
11
13
Ejemplo 1
K=D
10
11
Ejemplo 1
14
Fila y columna de E
C
10
11
Ejemplo 1
15
K=E
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:
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
Matriz C
Matriz D
10
10
15
Ejemplo 2
21
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
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
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
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
10
12
11
10
11
10
12
10
Ejemplo 2
30
10
12
11
10
11
10
12
10