s3 8 algoritmo de floyd. (2) resized

Upload: josemanuelslater

Post on 09-Mar-2016

233 views

Category:

Documents


0 download

DESCRIPTION

graph

TRANSCRIPT

  • 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)