El Algoritmo de Floyd resuelve el problema de encontrar la ruta más corta en todos los pares
de nodos o vértices de un grafo, sin necesidad de definir un nodo o
vértice inicial. Además de ello nos indica la distancia, y el recorrido a
seguir. En esta oprtunidad presentamos el algorimo de Floyd paralelizado.
Antes de comenzar vamos hacer unas cuantas definiciones:
Sea G = (V,E,w) un grafo con pesos, donde V = {v1, v2, v3, ..., vn }
es el conjunto de vértices de G donde E es el conjunto de pares (vi,vj) cuyo peso viene dado por wij.
Consideremos un conjunto de vértices { v1, v2, v3, ..., vk } , para
cualquier para de vertices vi, vj considerar todos los caminos, tales
que los vetices pertenecientes al camino pertenezcan a dicho conjunto
para algún k <=n. Sea pk_ij el camino de peso minimo entre ellos
y sea dk_ij el peso de dicho camino:
* Si vk no pertenece al camino minimo entonces pk_ij = pk-1_ij.
* Si vk pertenece al camino minimo entonces tenemos un camino minimo
de vi a vk y otro de vk a vj cada uno de esos caminos usa los vertices de
{ v1,...,vk}.
de vi a vk y otro de vk a vj cada uno de esos caminos usa los vertices de
{ v1,...,vk}.
Nota:
siendo más exigentes el camino de vk a vj excluye al vertice vi el camino de vi a vk excluye al vertice vj siendo aún más exigentes el camino vi a vk se intersectan con el camino de de vk a vj en un solo vertice.
siendo más exigentes el camino de vk a vj excluye al vertice vi el camino de vi a vk excluye al vertice vj siendo aún más exigentes el camino vi a vk se intersectan con el camino de de vk a vj en un solo vertice.
Con ello podemos plantear la siguiente ecuación: