al gor i t modeFl oydWar shal l camino mínimo entre todos los pares de nodos Robert W. Floyd nació el 8 de junio de 1936 en Nueva York, es profesor de la Stanford
University (!"! #$ica%o 19&& !S! #$ica%o 19&8', y en 198 fue %alardonado con el presti%ioso pre)io "!*! +urin% +urin% ue otor%a otor%a la "#* para reconocer reconocer las contri-uciones contri-uciones de naturale.a t/cnica reali.adas a la co)unidad infor)0tica! l pre)io le fue concedido por tener una influencia influencia clara en las )etodolo%2as para la creación de softare softare eficiente y fia-le, y por ayudar a fundar las si%uientes 0reas de la infor)0tica4 teor2a de an0lisis sint0ctico, se)0ntica de los le%uajes de pro%ra)ación, verificación auto)0tica de pro%ra)as, s2ntesis s2ntesis auto)0tica de pro%ra)as pro%ra)as y an0lisis an0lisis de al%orit)os! 5ue uno de los inventores del deterministic linear time selection algorithm! +a)-i/n introdujo )ejoras en los al%orit)os uicksort uicksort y y uickselect uickselect!! algoritmo de Floyd-Warshall (todos los caminos mínimos)
l pro-le)a ue intenta resolver este al%orit)o es el de encontrar el ca)ino )0s corto entre todos los pares de nodos o v/rtices de un %rafo! sto es se)ejante a construir una ta-la con todas las distancias )2ni)as entre pares de ciudades de un )apa, indicando ade)0s la ruta a se%uir para ir de la pri)era ciudad a la se%unda! ste es uno de los pro-le)as )0s interesantes interesantes ue se pueden resolver resolver con al%orit)os de de %rafos! isten varias soluciones a este pro-le)a y los al%orit)os a aplicar dependen ta)-i/n de la eistencia de arcos con pesos o costes ne%ativos en el %rafo! n el caso de no eistir pesos ne%ativos, ser2a posi-le ejecutar 7 veces el al%orit)o de ijkstra para el c0lculo del ca)ino )2ni)o, donde 7 es el n)ero de v/rtices o nodos del %rafo! sto conllevar2a un tie)po de ejecución de :(7;3' (aunue se puede reducir'! Si eisten arcos con pesos ne%ativos, se puede ejecutar ta)-i/n 7 veces el "l%orit)o de ell)an< 5ord, una ve. para cada nodo del %rafo! =ara %rafos densos (con )uc$as coneiones o arcos' esto conllevar2a un tie)po de ejecución de :(7;>'! l al%orit)o de 5loyd
Inicializar D = A ' matriz de distancias = matriz de arcos
si i=j o Dij= infinito entonces Pi,j = nlo sino Pi,j=i 'matriz de caminos
for ! = " to # for i = " to # for j = " to # Di,j = min(Di,j , Di,! $ D!,j ) si min = Di,! $ D!,j entonces Pi,j = P!,j fin
ste al%orit)o se puede aplicar a )ultitud de pro-le)as, incluyendo el diseDo de circuitos, el diseDo de rutas de transporte, aproi)aciones al pro-le)a del viajante de co)ercio, o co)o -ase de otros al%orit)os )0s co)plejos!
Eo-ert ?! 5loyd Eo-ert ?! 5loyd, "l%orit$) 9 (S$ortest =at$'! #o))unications of t$e "#*, &(6'43>&, 196A! Step$an ?ars$all, " t$eore) on -oolean )atrices! Journal of the ACM , 9(1'411< 1A, 196A! #! F! =apadi)itriou, *! Sideri, :n t$e 5loyd
ej empl odecami nomí ni moent r et odosl ospar es denodos =ara la ejecución de este al%orit)o en Grafos no se reuiere de la selección de nin%n nodo ori%en o destino! #o)o su no)-re indica, el al%orit)o proporcionar0 todos los posi-les ca)inos )2ni)os entre cada par de nodos ori%en y destino! n cierto )odo es euivalente a ejecutar n × n veces el al%orit)o de ijkstra eli%iendo a cada paso el nodo ori%en y destino i-j correspondiente! Grafos su-rayar0 todos los arcos ue for)en parte de al%n ca)ino )2ni)o! Hos itinerarios o ca)inos entre pares de nodos aparecer0n descritos en el teto del an0lisis!
s i)portante co)prender el si%nificado de la )atri. de distancias )2ni)as y de la )atri. de ca)inos!
%atriz de Distancias m&nimas
"*
+
"
*
+
+
.
/
0
1
"
""
+
"
*
*
""
"/
+
"2
/
+
*
1
"0
2
"*
+
%atriz de 3aminos
"*
+
"
*
+
-
"
+
"
-
"
"
*
-
+
*
"
-
+
-
4istado de 3aminos
+ --(+)--5 + = + --(.)--5 " = +, , " + --(/)--5 * = +, , ", * + --(0)--5 = +, + --(1)--5 = +, , " --("")--5 + = ", , , + " --(+)--5 " = " --(")--5 * = ", * " --(*)--5 = ", " --()--5 = ", , * --("")--5 + = *, , + * --("/)--5 " = *, , +, , " * --(+)--5 * = * --("2)--5 = *, , +, * --()--5 = *, --(/)--5 + = , , + --()--5 " = , " --()--5 * = , ", * --(+)--5 = --(*)--5 = , --(1)--5 + = , + --("0)--5 " = , +, , " --(2)--5 * = , * --("*)--5 = , +, --(+)--5 =