Estoy tratando de utilizar esta lógica para entender lo que está pasando con el adjacency matrix pero estoy confundida massivley donde dice acerca de espacio intermedio ABCD .....Floyd-Warshall algoritmo de lógica - Stuck
podría alguien explicar lo que está pasando aquí?
Gracias (etiquetados como Java como el lenguaje de esto fue demostrado a nosotros en, así que si alguien ha publicado ningún ejemplo de código que podían ver que era en ese idioma)
http://compprog.wordpress.com/2007/11/15/all-sources-shortest-path-the-floyd-warshall-algorithm/
Aquí es el código:
for (k = 0; k < n; ++k) {
for (i = 0; i < n; ++i)
for (j = 0; j < n; ++j)
/* If i and j are different nodes and if
the paths between i and k and between
k and j exist, do */
if ((dist[i][k] * dist[k][j] != 0) && (i != j))
/* See if you can't get a shorter path
between i and j by interspacing
k somewhere along the current
path */
if ((dist[i][k] + dist[k][j] < dist[i][j]) ||
(dist[i][j] == 0))
dist[i][j] = dist[i][k] + dist[k][j];
@stan: Floyd-Warshall es uno de los típicos "DP algo", junto con Levenhstein's Edit Distance y el "0-1 Knapsack". Para entenderlo, debes entender de qué se trata la "Programación Dinámica" (la mayoría de los programadores que no tienen un título de CS no saben nada sobre DP). La entrada de Wikipedia sobre el tema es buena: http://en.wikipedia.org/wiki/Dynamic_programming y, de lo contrario, puedes intentar participar en algunos concursos en línea (como TopCoder), donde normalmente muchos de los problemas necesitan un DP solución. – SyntaxT3rr0r