floyd warshall (real problem)

16
UMSNH FIE Análisis de Algoritmos Dra. Karina Mariela Figueroa Mora Algoritmo de Floyd - Warshall Herrera Garcia Jose Juan [email protected]

Upload: jose-juan-herrera

Post on 05-Jul-2015

3.009 views

Category:

Education


0 download

TRANSCRIPT

Page 1: Floyd Warshall (Real Problem)

UMSNH FIEAnálisis de Algoritmos Dra. Karina Mariela Figueroa Mora

Algoritmo de Floyd - Warshall

Herrera Garcia Jose [email protected]

Page 2: Floyd Warshall (Real Problem)

Problema

El problema surge por la necesidad de encontrar el camino mas corto y menos costoso para poder obtener mejores ganacias y ahorrar el mayor tiempo posible. Aplicados por ejemplo a el diseño de rutas de transporte, aproximaciones al problema del viajante de comercio, etc.

Page 3: Floyd Warshall (Real Problem)

Algoritmo de Floyd - Warshall

8 de junio de 1936 en Nueva York a 25 de septiembre de 2001

El algoritmo de Floyd-Warshall Encuentra el camino más corto entre todos los pares de nodos o vértices de un grafo. Usa la metodología de Programación Dinámica para resolver el problema.

Robert W. Floyd

Page 4: Floyd Warshall (Real Problem)

Entrada: una matriz de adyacencia n×n.

Cuerpo: la idea es Mantener una matriz con las distancias calculadas hasta ese momento.

Resultado: la matriz de resultados contendrá las distancias mínimas y el recorrido.

Page 5: Floyd Warshall (Real Problem)

Problema Real

La Empresa cuenta con 7 bodegas distribuidoras de aguacate en el país. Los administradores desean saber el costo mínimos de flete de una bodega a otra sin importar la bodega que envía y la bodega que recibe, esto para optimizar recursos a la hora que se transporta producto.

Page 6: Floyd Warshall (Real Problem)
Page 7: Floyd Warshall (Real Problem)

Del Grafo obtenemos:

Page 8: Floyd Warshall (Real Problem)

Aplicando el Algoritmo de Floyd-Warshall

Se obtiene la siguiente matriz

Page 9: Floyd Warshall (Real Problem)

Aplicando el Algoritmo de Floyd-Warshall

Por ejemplo, si se quiere llevar producto de bodega A a la bodega G:

DAG= 55 Con el recorrido A E G

DAE = 35 Con el recorrido A D E

DAD = 20 Con el recorrido A B D

A B D E G

Page 10: Floyd Warshall (Real Problem)

A B D E G

Page 11: Floyd Warshall (Real Problem)

Aplicando el Algoritmo de Floyd-Warshall

Por ejemplo, si se quiere llevar producto de bodega A a la bodega G:

DFA= 40 Con el recorrido F D A

DDA = 20 Con el recorrido D B A

F D B A

Page 12: Floyd Warshall (Real Problem)

F D B A

Page 13: Floyd Warshall (Real Problem)

Complejidad del algortimo Floyd-Warshall

Pseducódigo:

FloydWarshall (camino[][]) {

N=camino.length;

para k: = 0 hasta N 1 − //N

para i:=0 hasta N 1− //N

Para j:=0 hasta N 1 − //N

camino[i][j] = mín ( camino[i][j], camino[i][k]+camino[k][j]);

}

N*N*N = N3 por lo tanto la complejidad de este algoritmo es O(N3).

Donde N es el número de nodos del grafo.

Page 14: Floyd Warshall (Real Problem)

Complejidad usando fuerza bruta.

Page 15: Floyd Warshall (Real Problem)

Ejemplo:

Para 4 nodos, los posibles caminos son:

(N-1)!=(3)!=6

Estos caminos son:

Page 16: Floyd Warshall (Real Problem)