Materia: #técnicas_y_diseños_de_algoritmos
Tags: Algoritmo, Grafos, Camino mínimo
Algoritmo de Floyd
Este algoritmo calcula el camino mínimo entre todo par de vértices de un digrafo pesado. Utiliza programación dinámica y se basa en la sigiente idea:
-
Si
y calculamos como , donde es la longitud de un camino mínimo de a con vértices intermedio o directo. -
Si calculamos
a partir de como donde es la longitud de un camino mínimo de a cuyos vértices intermedios están en . -
.
Damos por hecho que no existen circuitos de longitud negativa.
El pseudocodigo del algoritmo podria escribirse:
Floyd(G)
D = L;
for (k desde 1 a n) do:
for (i desde 1 a n) do:
for (j desde 1 a n) do:
d[i][j] = mín(d[i][j], d[i][k] + d[k][j]);
end for;
end for;
end for;
return D;
Donde
Este algoritmo tiene complejidad