Está en la página 1de 2

ALGORITMO DE FLOYD

El Algoritmo de Floyd encuentra el camino más corto entre todos los vértices de la digráfica.
Sea la gráfica dirigida G = (V,A) donde cada arco u v tiene asociado un peso . El
algoritmo de Floyd permitirá encontrar el camino más corto entre cada par ordenado u y v .

La matriz de distancias sirve como punto de partida para este algoritmo. Se realizan k
iteraciones sobre el matiz buscando el camino más corto; por lo tanto en la k-éstima iteración,
M [ i, j ] tendrá el camino de menor costo para llegar de i a j, pasando por un número de
vértices menor a k, el cual se calculara según la siguiente expresión :

Mk-1 [ i, j ]
Mk [ i, j ] min= Mk-1 [ i, k ] + Mk-1 [ k, j ]

Se elegirá el camino más corto entre el valor obtenido en la iteración (k – 1) y el que resulta de
pasar por el vértice k. En el algoritmo se usa la matriz de costos, M, donde M [ i, j ] será
igual el costo de ir a i a j, a un valor muy grande (∞) sino existe camino de i a j, o a cero si i = j.

FLOYD (N)

Este algoritmo encuentra la distancia mínima entre todos los vértices de la gráfica dirigida. N es
el número de vértices de la gráfica dirigida. M es una matriz de N X N elementos, y se inicia con
los costos de la digráfica. k, i, j son variables enteras.

1. Repetir con K desde 1 hasta N


1.1 Repetir con I desde 1 hasta N
1.1.1 Repetir son J desde 1 hasta N
1.1.1.1 Si (M1k+Mkj < Mij entonces
Hacer Mij ←Mik+Mkj
1.1.1.1.2(Fin del condicional del paso 1.1.1.1)
1.1.2 (Fin del ciclo del paso 1.1.1)
1.2 Fin del ciclo del paso 1.1)
2. (Fin del ciclo del paso 1)

Para todo vértice de la digráfica se prueba si el camino más corto para ir desde dicho vértice a
los otros, es a través de un vértice intermedio k. En caso de ir del vértice origen al intermedio y
el intermedio al destino. En otro caso, el valor de M [ i, j ] no se modifica. Una vez probados
todos los vértices de la digráfica como nodos intermedios, matriz resultante almacena la menor
distancia entre cada par de nodos. La complejidad del algoritmo es del orden de O (N3), ya que
se utilizan tres ciclos anidados de orden N.

EJEMPLO

En el gráfico se presentan los diferentes estados de la matriz de distancias de la digráfica dad,


obtenidos a partir de la aplicación del algoritmo. Así , la matriz mostrada en el inciso a) es la
matriz de distancias de la digráfica dada - estado inicial -. La matriz de costos mostrada en el
inciso b) es la obtenida usando el vértice b como vértice intermedio. En este paso, K= 2, se
encontraron los siguientes caminos: a, b, d (con distancia igual a 10); a, b, e (con distancia
igual a 6) y c,b,e (con distancia igual a 5). La figura de c corresponde a la matriz de distancias ,
resultado de usar el vértice c como vértice intermedio .En este paso, K=3, se encontró el
siguiente camino: e, c, b (con distancia igual a 8). Finalmente, la figura presentada en el inciso
d) muestra la matriz obtenida de distancias mediante el vértice e como vértice intermedio. Para
K = 5 se encontraron los siguientes caminos: a, e, d (con distancia igual a 7) y b, e, d (con
distancia igual a 5). El estado final de esta matriz almacena las distancias mínimas entre cada
uno de los vértices de la digráfica dada.
Si además de obtener la menor distancia entre todos los vértices de la gráfica dirigida se
requiere conocer la trayectoria encontrada para cada vértice, se deberá ir guardando dicha
trayectoria- los vértices intermedios -. Esta variante del algoritmo de Floyd utiliza un arreglo
auxiliar (7) de N X N elementos, donde T [ i, j ] será igual a k si k es un nodo intermedio entre i y
j.

ALGORITMO DE WASHALL

Este algoritmo encuentra, si es posible, un camino entre cada uno de los vértices de la gráfica
dirigida. Es decir, la solución encontrada por el algoritmo no presenta las distancias entre los
vértices, sólo muestra si hay o no camino entre ellos.
El algoritmo de Washall se basa en un concepto llamado cerradura transitiva de la matriz de
adyacencia. Sea la gráfica dirigida G (V, A) y su matriz de la adyacencia M, donde M [ i, j ] =
1 si hay un arco de i a j, o si y 0 si no lo hay. La cerradura transitiva de M es la matriz C tal que
C [ i, j ] = 1 si hay un camino de longitud mayor o igual que 1 de i a j, o 0 en otro caso. Para
generar la matriz C se establece que existe un camino del vértice i al j que pasa por un número
de vértices mayor que k sí:

a) Ya existe un camino de i a j que no pasa por un número de vértices mayor que k -1.
b) Hay un camino de i a k que no pasa por un número de vértices mayor que k – 1, y hay un
camino de k a j que no pasa por un número de vértices mayor que k – 1.

EJEMPLO

Se representan los diferentes estados de C, obtenidos a partir de la aplicación del algoritmo.


En la figura del inciso a) se muestra el estado inicial de la matriz. Por su parte en b) se
representa la correspondiente a la matriz C, resultado de usar el vértice como vértice
intermedio. Se formaron los caminos e, c, b y e, c, e. Finalmente en d) se presentan a la matriz
C luego se usar el vértice e como vértice intermedio. Se obtuvieron los caminos a, e, a, b, e, b,
b, e, c, y c, e, c

También podría gustarte