s3 8 algoritmo de floyd. (2) resized
DESCRIPTION
graphTRANSCRIPT
-
3.8 Algoritmo de Floyd-Warshall (2)
Alberto Conejero
Cristina Jordn
Universitat Politcnica de Valncia
Aplicaciones de la
Teora de Grafos
a la vida real
-
Aplicaciones de la Teora de Grafos a la vida real
Ejemplo introductorio
L1 L2 L3 L4 L5
L1 1 6 3
L2 3 4
L3 3 -3
L4 -2 3
L5 4 4
Sergio se traslada entre varios puntos de la ciudad, L1, L2, L3, L4 y L5, en
su viejecito pero til coche. Ha analizado el gasto entre diferentes lugares
y lo ha recogido en la tabla siguiente. Dado que cada vez se desplaza entre
sitios distintos le gustara disponer de una tabla que le indicara en cada
ocasin cul sera el coste del trayecto ms barato y el recorrido a realizar.
3.8. Floyd-Warshall(2)
-
Observaciones
Cules son los vrtices que forman el camino ms corto entre dos
vrtices dados?
La solucin se obtendr a partir de una matriz de vrtices, A=(aij),
cuyos elementos vienen definidos de la siguiente manera:
aij es el elemento anterior al j en el camino ms corto de i a j
Aplicaciones de la Teora de Grafos a la vida real
El camino se obtiene aplicando reiteradamente de atrs hacia adelante
la definicin anterior
3.8. Floyd-Warshall(2)
-
Ejemplo
Aplicaciones de la Teora de Grafos a la vida real
55214
34214
35334
35224
31211
El camino se obtiene aplicando reiteradamente de atrs hacia adelante
la definicin anterior
Camino de v2 a v4:
a24= 5
luego 5 es el anterior a 4 en el camino ms
corto de 2 a 4
2....4
2.5 4
a25= 3
luego 3 es el anterior a 5 en el camino ms
corto de 2 a 5
2..3 5 4 a23= 2
luego 2 es el anterior a 3 en el camino ms
corto de 2 a 3 2 3 5 4
Luego el camino es v2 v3 v5 v4
3.8. Floyd-Warshall(2)
-
Observacin
Aplicaciones de la Teora de Grafos a la vida real
Si probamos con un vrtice intermedio vk, k {1,2,3,4,5},
el vrtice anterior a j en el camino ms corto de i a j coincide con
el vrtice anterior a j en el camino ms corto de k a j,
es decir,
aij = akj
Cules son los vrtices que forman el camino ms corto entre dos
vrtices dados?
3.8. Floyd-Warshall(2)
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
Caminos ms cortos de vi a vj, i j, i , j {1,2,3,4,5} en G
0
101
204
10
270 v2
v3 v4
7
2
4
2
1
1
1 v5
0
101
3203
10
54250
Actualizando
p( v1,v5) = 8, pasando por v2
p( v3,v5) = 5, pasando por v2 p( v1,v2) = 6, pasando por v3
p( v1,v4) = 4, pasando por v3
p( v1,v5) = 7, pasando por v3 p( v1,v2) = 5, pasando por v4 p( v1,v5) = 5, pasando por v4 p( v3,v2) = 3, pasando por v4
p( v3,v5) = 3, pasando por v4
3.8. Floyd-Warshall(2)
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
Actualizamos
p( v1,v5) = 8, pasando por v2 a15= a25 = 2
55555
44444
33333
22222
11111
Matriz de inicio
3.8. Floyd-Warshall(2)
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
Actualizamos
55555
44444
33333
22222
21111
p( v1,v5) = 8, pasando por v2 a15= a25 = 2
3.8. Floyd-Warshall(2)
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
Actualizamos
p( v3,v5) = 5, pasando por v2 a35= a25 = 2
55555
44444
33333
22222
21111
3.8. Floyd-Warshall(2)
-
55555
44444
23333
22222
21111
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
Actualizamos
p( v3,v5) = 5, pasando por v2 a35= a25 = 2
3.8. Floyd-Warshall(2)
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
Actualizamos
p( v1,v2) = 6, pasando por v3 a12= a32 = 3
55555
44444
23333
22222
21111
3.8. Floyd-Warshall(2)
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
Actualizamos
p( v1,v2) = 6, pasando por v3 a12= a32 = 3
55555
44444
23333
22222
21131
3.8. Floyd-Warshall(2)
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
Actualizamos
p( v1,v4) = 4, pasando por v3 a14= a34 = 3
55555
44444
23333
22222
21131
3.8. Floyd-Warshall(2)
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
Actualizamos
p( v1,v4) = 4, pasando por v3 a14= a34 = 3
55555
44444
23333
22222
23131
3.8. Floyd-Warshall(2)
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
Actualizamos
p( v1,v5) = 7, pasando por v3 a15= a35 = 2
55555
44444
23333
22222
23131
3.8. Floyd-Warshall(2)
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
Actualizamos
p( v1,v5) = 7, pasando por v3 a15= a35 = 2
55555
44444
23333
22222
23131
3.8. Floyd-Warshall(2)
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
Actualizamos
p( v1,v5) = 7, pasando por v3 a15= a35 = 2
55555
44444
23333
22222
23131
3.8. Floyd-Warshall(2)
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
Actualizamos
p( v1,v2) = 5, pasando por v4 a12= a42 = 4
55555
44444
23333
22222
23131
3.8. Floyd-Warshall(2)
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
Actualizamos
p( v1,v2) = 5, pasando por v4 a12= a42 = 4
55555
44444
23333
22222
23141
3.8. Floyd-Warshall(2)
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
Actualizamos
p( v1,v5) = 5, pasando por v4 a15= a45 = 4
55555
44444
23333
22222
23141
3.8. Floyd-Warshall(2)
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
Actualizamos
p( v1,v5) = 5, pasando por v4 a15= a45 = 4
55555
44444
23333
22222
43141
3.8. Floyd-Warshall(2)
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
Actualizamos
p( v3,v2) = 3, pasando por v4 a32= a42 = 4
55555
44444
23333
22222
43141
3.8. Floyd-Warshall(2)
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
Actualizamos
p( v3,v2) = 3, pasando por v4 a32= a42 = 4
55555
44444
23343
22222
43141
3.8. Floyd-Warshall(2)
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
Actualizamos
p( v3,v5) = 3, pasando por v4 a35= a45 = 4
55555
44444
23343
22222
43141
3.8. Floyd-Warshall(2)
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
Actualizamos
p( v3,v5) = 3, pasando por v4 a35= a45 = 4
55555
44444
43343
22222
43141
3.8. Floyd-Warshall(2)
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
55555
44444
43343
22222
43141
3.8. Floyd-Warshall(2)
De v3 a v2: Buscamos a32=4, luego v4 es el anterior a v2 en el camino de v3 a v2
34 2 Buscamos a34=3, luego v3 es el anterior a v4 en el camino de v3 a v4 3 4 2
De v1 a v5: Buscamos a15=4, luego v4 es el anterior a v5 en el camino de v1 a v5
14 5 Buscamos a14=3, luego v3 es el anterior a v4 en el camino de v1 a v4 1..3 4 5 Buscamos a13=1, luego v1 es el anterior a v3 en el camino de v1 a v3 1 3 4 5
Cul es el camino
ms corto?
-
Aplicaciones de la Teora de Grafos a la vida real
Matriz de vrtices (Algoritmo de Floyd-Wharsall)
v2
v3 v4
7
2
4
2
1
1
1 v5
55555
44444
43343
22222
43141
3.8. Floyd-Warshall(2)
De v3 a v2: Buscamos a32=4, luego v4 es el anterior a v2 en el camino de v3 a v2
34 2 Buscamos a34=3, luego v3 es el anterior a v4 en el camino de v3 a v4 3 4 2
De v1 a v5: Buscamos a15=4, luego v4 es el anterior a v5 en el camino de v1 a v5
14 5 Buscamos a14=3, luego v3 es el anterior a v4 en el camino de v1 a v4 1..3 4 5 Buscamos a13=1, luego v1 es el anterior a v3 en el camino de v1 a v3 1 3 4 5
Cul es el camino
ms corto?
-
Aplicaciones de la Teora de Grafos a la vida real
Algoritmo de Floyd-Wharsall
Proporciona en un grafo G de n vrtices :
el peso de los caminos ms cortos entre dos vrtices mediante P=(pij)nxn (pij= peso del camino ms corto del i al j)
los vrtices que los forman mediante A=(aij)nxn (aij= vrtice anterior al j en el camino ms corto del i al j)
PASO 1. Se considera como matriz inicial P = (pij) la matriz de pesos asociada al grafo
Se considera la matriz inicial A = (aij) donde aij = vi
PASO 2. Para cada vrtice k = 1, 2,, n comprobar
si para cada par de vrtices i, j {1,2,,n}, tales que i j, i k, j k, pik y pkj
se verifica
pik + pkj < pkj
En caso afirmativo
pij := pik + pkj y aij:=akj
NOTA. Si en algn momento aparece un valor pii < 0 (valor de la diagonal negativo),
significa que hay un ciclo negativo y por tanto no hay solucin.
3.8. Floyd-Warshall(2)