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 asoci ado 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 sirv e como punto de partida para este algoritmo. Se realizan k iteraciones iteracione s sobre el matiz buscando el camino más corto; por lo tanto en la k-éstima iteración, iterac ió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 [ i, j ] min=
Mk-1 [ i, j ] Mk-1 [ i, k ] + Mk-1 [ k, j ]
Se elegirá el camino más más corto entre el valor obtenido 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 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, elementos, y se inicia con los costos de la digráfica. k, i, j son variables enteras.
1. Repet Repetir ir con K desd desde e 1 hasta hasta N 1.1 Repetir Repetir con I desde desde 1 hasta hasta N 1.1. 1.1.1 1 Repe Repeti tirr son son J des desde de 1 has hasta ta 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. 1.1.2 2 (Fin (Fin del del cic ciclo lo del del pas paso o 1.1 1.1.1 .1)) 1.2 Fin del del ciclo ciclo del paso paso 1.1) 1.1) 2. (Fin del ciclo del paso 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 intermedio k. En caso de ir del vértice origen al intermedio intermedio y el intermedio intermedio al destino. En otro caso, el valor de M [ i, j ] no se modifica. 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 (N 3), ya que se utilizan tres ciclos anidados de orden N.
EJEMPLO
En el gráfico se presentan los diferentes estados estados de la matriz de distancias de la digráfica dad, obtenidos a partir de la aplicación aplicación del algoritmo. algoritmo. Así , la matriz mostrada mostrada en el inciso 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 usando el vértice b como vértice intermedio. intermedio. En este paso, K= 2, se encontraron los siguientes caminos: 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 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) b)
Ya existe un camino de i a j que no pasa por un número de vértices mayor que k -1. 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