Está en la página 1de 3

Algoritmo de Floyd-Warshall

El algoritmo de Floyd-Warshall es la opción utilizada cuando se desea determinar el

camino mínimo entre todos los pares de vértices de un grafo, comparando todos los posibles

caminos logra mejorar paulatinamente la estimación hasta llegar a la más óptima. Esto puede

presentarse de manera más clara a través de un ejemplo de implementación. Pero antes,

revisaremos el análisis del tiempo de ejecución para este caso.

ANALIZIS DEL ALGORITMO

Al momento de analizar un algoritmo revisamos el conjunto de operaciones primitivas de alto

nivel que son independientes del lenguaje de programación que se utilice, estas pueden ser

identificadas en el pseudocódigo del mismo.


Conteo de operaciones primitivas

Para ésto, revisamos cada paso del algoritmo en el pseudocódigo y contamos las

operaciones que se ejecutan. A continuación se muestra el procedimiento llevado a

cabo:
El algoritmo de Warshall

El algoritmo de Warshall es un ejemplo de algoritmo booleano. A partir de una tabla inicial


compuesta de 0`s (no hay correspondencia inicial en el grafo) y 1`s (hay una
correspondencia, llamase “flecha”, entre nodos), obtiene una nueva matriz denominada
“Matriz de Clausura Transitiva” en la que se muestran todas las posibles uniones entre
nodos, directa o indirectamente. Es decir, si de “A” a “B” no hay una “flecha”, es posible que
si haya de “A” a “C” y luego de “C” a “B”. Luego, este resultado se verá volcado en la matriz
final.

El algoritmo de Floyd
El algoritmo de Floyd es muy similar, pero trabaja con grafos ponderados. Es decir, el valor
de la “flecha” que representamos en la matriz puede ser cualquier número real o infinito.
Infinito marca que no existe unión entre los nodos. Esta vez, el resultado será una matriz
donde estarán representadas las distancias mínimas entre nodos, seleccionando los caminos
más convenientes según su ponderación (“peso”). Por ejemplo, si de “A” a “B” hay 36 (km),
pero de “A” a “C” hay 2(km) y de “C” a “B” hay 10 (km), el algoritmo nos devolverá
finalmente que de “A” a “B” hay 12 (km).
El algoritmo de Floyd-Warshall compara todos los posibles caminos a través del grafo entre
cada par de vértices.

Comportamiento con ciclos negativos


Para que haya coherencia numérica, Floyd-Warshall supone que no hay ciclos negativos (de
hecho, entre cualquier pareja de vértices que forme parte de un ciclo negativo, el camino
mínimo no está bien definido porque el camino puede ser infinitamente pequeño). No
obstante, si hay ciclos negativos, Floyd-Warshall puede ser usado para detectarlos. Si
ejecutamos el algoritmo una vez más, algunos caminos pueden decrementarse pero no
garantiza que, entre todos los vértices, caminos entre los cuales puedan ser infinitamente
pequeños, el camino se reduzca. Si los números de la diagonal de la matriz de caminos son
negativos, es condición necesaria y suficiente para que este vértice pertenezca a un ciclo
negativo.

También podría gustarte