SlideShare una empresa de Scribd logo
Algoritmo de Floyd- Warshall
• Fue descrito en 1959 por Bernard Roy, es un algoritmo de análisis
sobre grafos para encontrar el camino mínimo en grafos dirigidos
ponderados.
• El algoritmo encuentra el camino entre todos los pares de vértices de
una única ejecución.
• Este algoritmo es un ejemplo de programación dinámica.
• El problema que intenta resolver este algoritmo es el de encontrar el
camino mas corto entre todos los pares de nodos o vértices de un
grafo.
• Esto es semejante a construir una tabla con todas las distancias
mínimas entre pares de ciudades de una mapa, indicando además la
ruta a seguir para ir de la primera ciudad a la segunda.
• El tiempo de ejecución del algoritmo es:
• Se tiene el siguiente grafo dirigido
1 2
4 3
7
8
2
1
2
3
5
• Del grafo se saca la siguiente matriz.
A0
=
• En la primera iteración se tomara la primera fila y columna.
A0
= A1
=
1 2 3 4
1 0 3 ∞ 7
2 8 0 2 ∞
3 5 ∞ 0 1
4 2 ∞ ∞ 0
1 2 3 4
1 0 3 ∞ 7
2 8 0 2 ∞
3 5 ∞ 0 1
4 2 ∞ ∞ 0
1 2 3 4
1 0 3 ∞ 7
2 8 0
3 5 0
4 2 0
• Para calcular la distancia menor entre los nodos se realiza las
siguiente operación
• A0
[2,3] A0
[2,1] + A0
[1,3]
2 < 8 + ∞
• A0
[2,4] A0
[2,1] + A0
[1,4]
∞ > 8 + 7
• A0
[3,2] A0
[3,1] + A0
[1,2]
∞ > 5 + 3
• A0
[3,4] A0
[3,1] + A0
[1,4]
1 < 5 + 7
• A0
[4,2] A0
[4,1] + A0
[1,2]
∞ > 2 + 3 A1
=
• A0
[4,3] A0
[3,1] + A0
[1,2]
∞ > 2 + ∞
1 2 3 4
1 0 3 ∞ 7
2 8 0 2 ∞
3 5 ∞ 0 1
4 2 ∞ ∞ 0
1 2 3 4
1 0 3 ∞ 7
2 8 0
3 5 0
4 2 0
• A1
=
• Para la segunda iteración.
• A1
[1,3] A1
[1,2] + A1
[2,3]
∞ > 2 + 3
• A1
[1,4] A1
[1,2] + A1
[2,4]
7 < 3 + 15
• A1
[3,1] A1
[2,1] + A1
[3,2] A2
=
5 < 8 + 8
• A1
[3,4] A1
[3,2] + A1
[2,4]
1 < 5 + 3
1 2 3 4
1 0 3 ∞ 7
2 8 0 2 15
3 5 8 0 1
4 2 5 ∞ 0
1 2 3 4
1 0 3
2 8 0 2 15
3 8 0
4 5 0
• A1
[4,1] A1
[2,1] + A1
[4,2]
2 < 8 + 5
• A1
[4,3] A1
[2,3] + A1
[4,2]
∞ > 5 + 2
A2
=
• Para la tercera iteración
• A2
[1,2] A2
[1,3] + A2
[3,2]
3 <5 + 8
• A2
[1,4] A2
[1,3] + A2
[3,4]
7 > 5 + 1
• A2
[2,1] A2
[1,3] + A2
[3,2]
8 > 2 + 5
1 2 3 4
1 0 3 5 7
2 8 0 2 15
3 5 8 0 1
4 2 5 7 0
1 2 3 4
1 0 5
2 0 2
3 5 8 0 1
4 7 0
• A2
[2,4] A2
[2,3] + A2
[3,4]
15 > 2 + 1
• A2
[4,1] A2
[3,1] + A2
[4,3] A3
=
2 < 5 + 7
• A2
[4,2] A2
[3,2] + A2
[4,3]
5 < 8 + 7
• Ultima iteración
• A3
[1,2] A3
[1,4] + A3
[4,2]
3 < 7 + 5
• A3
[1,3] A3
[1,4] + A3
[4,3]
5 < 7 + 7
• A3
[2,1] A3
[2,4] + A3
[4,1]
7 > 3 + 2
• A3
[2,3] A3
[2,4] + A3
[4,3]
2 < 3 + 7
• A3
[3,1] A3
[3,4] + A3
[4,1]
5 > 1 + 2
• A3
[3,2] A3
[3,4] + A3
[4,2]
8 > 1 + 5
1 2 3 4
1 0 3 5 6
2 7 0 2 3
3 5 8 0 1
4 2 5 7 0
1 2 3 4
1 0 6
2 0 3
3 0 1
4 2 5 7 0
• La matriz queda de la forma.
1 2 3 4
1 0 3 5 6
2 5 0 2 3
3 3 6 0 1
4 2 5 7 0
1 2
4 3
7
8
2
1
2
3
5
• Con las observaciones que se tuvo en el algoritmo, se puede definir
de forma recursiva.
• Donde se obtiene el siguiente seudocódigo
Algoritmo de Johnson para grafos dispersos
• Es también un algoritmo para encontrar el camino mas corto entre
todos los pares de vértices de un grafo dirigido y disperso.
• Permite que las aristas tengan pesos negativos, si bien ni permite
ciclos de peso negativo.
• Funciona utilizando el algoritmo de Bellman-Ford para hacer una
transformación en el grafo inicial que elimina todas las aristas de peso
negativo, permitiendo por lo tanto usar el algoritmo de Dijkstra en el
grafo transformado.
• Se tiene el siguiente grafo:
•
• Vértices = 5
• Aristas = 9
• Se le aumenta una arista para este algoritmo
• V Vértices = 5
• Aristas = 14
• h(1) = d(0,1) = 0
• h(2) = d(0,2) = 0 4 3 2 = 0-5+4 = -1
• h(3) = d(0,3) = 0 4 3=0-5=-5
• h(4) = d(0,4) = 0 4 = 0
• h(5) = d(0,5) = 0 1 5=-4
• Luego aplicamos la formula.
• Donde:
• w’(1,2) = w(1,2) + h(1) – h(2) = 3 + 0 – (-1) = 4
• w’(1,3) =13
• w’(1,5) =0
• w’(2,4) =0
• w’(2,5) =10
• w’(3,2) = 0
• w’(4,1) = 0
• w’(4,3) = 2
• w’(5,4) = 2
• w’(0,1) = 0
• w’(0,2) = 1
• w’(0,3) = 5
• w’(0,4) = 0
• w’(0,5) = 4
• Para el vértice ‘1’
• d’(1,1) = 0
• d’(1,2) = 2
• d’(1,3) = 2
• d’(1,4) = 2
• d’(1,5) = 0
• Para encontrar ‘d’
• d(u,v) = d’(u,v) – h(u) + h(v)
• d(1,1) = d’(1,1) – h(1) + h(1) = 0 – 0 – 0 = 0
• d(1,2) = 1
• d(1,3) = -3
• d(1,4) = 2
• d(1,5) = -4
• Para el vertice ‘2’
• d’(2,1) = 2
• d’(2,2) = 0
• d’(2,3) = 0
• d’(2,4) = 0
• d’(2,5) = 2
• Para encontrar ‘d’
• d(u,v) = d’(u,v) – h(u) + h(v)
• d(2,1) = 3
• d(2,2) = 0
• d(2,3) = -4
• d(2,4) = 1
• d(2,5) = -1
• Para el vertice ‘3’
• d’(3,1) = 2
• d’(3,2) = 0
• d’(3,3) = 0
• d’(3,4) = 0
• d’(3,5) = 2
• Para encontrar ‘d’
• d(u,v) = d’(u,v) – h(u) + h(v)
• d(3,1) = 7
• d(3,2) = 4
• d(3,3) = 0
• d(3,4) = 5
• d(3,5) = 3
• Para el vertice ‘4’
• d’(4,1) = 2
• d’(4,2) = 0
• d’(4,3) = 0
• d’(4,4) = 0
• d’(4,5) = 2
• Para encontrar ‘d’
• d(u,v) = d’(u,v) – h(u) + h(v)
• d(4,1) = 2
• d(4,2) = -1
• d(4,3) = -5
• d(4,4) = 0
• d(4,5) = -2
• Para el vertice ‘5’
• d’(5,1) = 4
• d’(5,2) = 2
• d’(5,3) = 2
• d’(5,4) = 2
• d’(5,5) = 0
• Para encontrar ‘d’
• d(u,v) = d’(u,v) – h(u) + h(v)
• d(5,1) = 8
• d(5,2) = 5
• d(5,3) = 1
• d(5,4) = 6
• d(5,5) = 0
• El seudocódigo del algoritmo es el siguiente.
• Y su complejidad es de:

Más contenido relacionado

PPT
Grafos Iii
PDF
R153041
PDF
Algoritmo de Floyd-Warshall
PPT
Algoritmo de Dijkstra
PPTX
Grafos y Digrafos
PDF
Algoritmo de Bellman- Ford
Grafos Iii
R153041
Algoritmo de Floyd-Warshall
Algoritmo de Dijkstra
Grafos y Digrafos
Algoritmo de Bellman- Ford

Similar a Algoritmo de Floyd - Warshall para imformatica (20)

PDF
ALGORITMO DE BELLMAN FORD.pdf
PPTX
Presentación_T3_JoséJaén (1).pptx
PDF
Ejercicios de grafos y digrafos
PPTX
Floyd
PPT
Grafos[1]
DOCX
Grafos
PDF
All pairts shortest path class 18
PDF
Flyd+Warshall
PPSX
Ejercicios (Grafos)
PPSX
Ejercicios jorge ramirez
PDF
Revista Manuel Torres: Mirror-x100@
PPTX
Grafos - Ramiro Vieito
PPTX
Floyd Prim y Kruscal
PPTX
Ejercicios propuestos
PPS
Grafos
PPTX
Jose melendez estructura discreta 2
DOCX
Alexander gallardo.doc
DOCX
EL ALGORITMO DE FLOYD-WARSHALL PARA GRAFOS
PDF
Grafos propuestos jordi cuevas 14941413
ALGORITMO DE BELLMAN FORD.pdf
Presentación_T3_JoséJaén (1).pptx
Ejercicios de grafos y digrafos
Floyd
Grafos[1]
Grafos
All pairts shortest path class 18
Flyd+Warshall
Ejercicios (Grafos)
Ejercicios jorge ramirez
Revista Manuel Torres: Mirror-x100@
Grafos - Ramiro Vieito
Floyd Prim y Kruscal
Ejercicios propuestos
Grafos
Jose melendez estructura discreta 2
Alexander gallardo.doc
EL ALGORITMO DE FLOYD-WARSHALL PARA GRAFOS
Grafos propuestos jordi cuevas 14941413
Publicidad

Último (20)

PPTX
Presentación - Taller interpretación iso 9001-Solutions consulting learning.pptx
PPTX
Manual ISO9001_2015_IATF_16949_2016.pptx
PPTX
clase MICROCONTROLADORES ago-dic 2019.pptx
PDF
manual-sap-gratuito _ para induccion de inicio a SAP
PDF
LIBRO UNIVERSITARIO SISTEMAS PRODUCTIVOS BN.pdf
PDF
TRABAJO DE ANÁLISIS DE RIESGOS EN PROYECTOS
PPTX
PPT SESIÓN 6 Los Injertos.- Micropropagación e Injertos Clonales.pptx
PPTX
PPT PE 7 ASOCIACIONES HUAMANGA_TALLER DE SENSIBILIZACIÓN_20.04.025.pptx
PDF
FUNCION CUADRATICA FUNCIONES RAIZ CUADRADA
PPTX
376060032-Diapositivas-de-Ingenieria-ESTRUCTURAL.pptx
PPTX
ARQUITECTURA INTEGRAL EN OBRA, PRINCIPIOS BASICOS Y TERMINOS
PPTX
Riesgo eléctrico 5 REGLAS DE ORO PARA TRABAJOS CON TENSION
PDF
BROCHURE SERVICIOS CONSULTORIA ISOTEMPO 2025
PDF
UD3 -Producción, distribución del aire MA.pdf
PDF
LIBRO UNIVERSITARIO DESARROLLO ORGANIZACIONAL BN.pdf
PDF
experto-gestion-calidad-seguridad-procesos-quimicos-industriales-gu.pdf
PPTX
Electronica II, material basico de electronica II
PDF
LIBRO UNIVERSITARIO SOFTWARE PARA INGENIERIA BN.pdf
PDF
Repaso sobre el Gusano_cogollero y como ataca .pdf
PPTX
TECNOLOGIA EN CONSTRUCCION PUBLICO Y PRIVADA
Presentación - Taller interpretación iso 9001-Solutions consulting learning.pptx
Manual ISO9001_2015_IATF_16949_2016.pptx
clase MICROCONTROLADORES ago-dic 2019.pptx
manual-sap-gratuito _ para induccion de inicio a SAP
LIBRO UNIVERSITARIO SISTEMAS PRODUCTIVOS BN.pdf
TRABAJO DE ANÁLISIS DE RIESGOS EN PROYECTOS
PPT SESIÓN 6 Los Injertos.- Micropropagación e Injertos Clonales.pptx
PPT PE 7 ASOCIACIONES HUAMANGA_TALLER DE SENSIBILIZACIÓN_20.04.025.pptx
FUNCION CUADRATICA FUNCIONES RAIZ CUADRADA
376060032-Diapositivas-de-Ingenieria-ESTRUCTURAL.pptx
ARQUITECTURA INTEGRAL EN OBRA, PRINCIPIOS BASICOS Y TERMINOS
Riesgo eléctrico 5 REGLAS DE ORO PARA TRABAJOS CON TENSION
BROCHURE SERVICIOS CONSULTORIA ISOTEMPO 2025
UD3 -Producción, distribución del aire MA.pdf
LIBRO UNIVERSITARIO DESARROLLO ORGANIZACIONAL BN.pdf
experto-gestion-calidad-seguridad-procesos-quimicos-industriales-gu.pdf
Electronica II, material basico de electronica II
LIBRO UNIVERSITARIO SOFTWARE PARA INGENIERIA BN.pdf
Repaso sobre el Gusano_cogollero y como ataca .pdf
TECNOLOGIA EN CONSTRUCCION PUBLICO Y PRIVADA
Publicidad

Algoritmo de Floyd - Warshall para imformatica

  • 1. Algoritmo de Floyd- Warshall • Fue descrito en 1959 por Bernard Roy, es un algoritmo de análisis sobre grafos para encontrar el camino mínimo en grafos dirigidos ponderados. • El algoritmo encuentra el camino entre todos los pares de vértices de una única ejecución. • Este algoritmo es un ejemplo de programación dinámica.
  • 2. • El problema que intenta resolver este algoritmo es el de encontrar el camino mas corto entre todos los pares de nodos o vértices de un grafo. • Esto es semejante a construir una tabla con todas las distancias mínimas entre pares de ciudades de una mapa, indicando además la ruta a seguir para ir de la primera ciudad a la segunda. • El tiempo de ejecución del algoritmo es:
  • 3. • Se tiene el siguiente grafo dirigido 1 2 4 3 7 8 2 1 2 3 5
  • 4. • Del grafo se saca la siguiente matriz. A0 = • En la primera iteración se tomara la primera fila y columna. A0 = A1 = 1 2 3 4 1 0 3 ∞ 7 2 8 0 2 ∞ 3 5 ∞ 0 1 4 2 ∞ ∞ 0 1 2 3 4 1 0 3 ∞ 7 2 8 0 2 ∞ 3 5 ∞ 0 1 4 2 ∞ ∞ 0 1 2 3 4 1 0 3 ∞ 7 2 8 0 3 5 0 4 2 0
  • 5. • Para calcular la distancia menor entre los nodos se realiza las siguiente operación • A0 [2,3] A0 [2,1] + A0 [1,3] 2 < 8 + ∞ • A0 [2,4] A0 [2,1] + A0 [1,4] ∞ > 8 + 7 • A0 [3,2] A0 [3,1] + A0 [1,2] ∞ > 5 + 3 • A0 [3,4] A0 [3,1] + A0 [1,4] 1 < 5 + 7 • A0 [4,2] A0 [4,1] + A0 [1,2] ∞ > 2 + 3 A1 = • A0 [4,3] A0 [3,1] + A0 [1,2] ∞ > 2 + ∞ 1 2 3 4 1 0 3 ∞ 7 2 8 0 2 ∞ 3 5 ∞ 0 1 4 2 ∞ ∞ 0 1 2 3 4 1 0 3 ∞ 7 2 8 0 3 5 0 4 2 0
  • 6. • A1 = • Para la segunda iteración. • A1 [1,3] A1 [1,2] + A1 [2,3] ∞ > 2 + 3 • A1 [1,4] A1 [1,2] + A1 [2,4] 7 < 3 + 15 • A1 [3,1] A1 [2,1] + A1 [3,2] A2 = 5 < 8 + 8 • A1 [3,4] A1 [3,2] + A1 [2,4] 1 < 5 + 3 1 2 3 4 1 0 3 ∞ 7 2 8 0 2 15 3 5 8 0 1 4 2 5 ∞ 0 1 2 3 4 1 0 3 2 8 0 2 15 3 8 0 4 5 0
  • 7. • A1 [4,1] A1 [2,1] + A1 [4,2] 2 < 8 + 5 • A1 [4,3] A1 [2,3] + A1 [4,2] ∞ > 5 + 2 A2 = • Para la tercera iteración • A2 [1,2] A2 [1,3] + A2 [3,2] 3 <5 + 8 • A2 [1,4] A2 [1,3] + A2 [3,4] 7 > 5 + 1 • A2 [2,1] A2 [1,3] + A2 [3,2] 8 > 2 + 5 1 2 3 4 1 0 3 5 7 2 8 0 2 15 3 5 8 0 1 4 2 5 7 0 1 2 3 4 1 0 5 2 0 2 3 5 8 0 1 4 7 0
  • 8. • A2 [2,4] A2 [2,3] + A2 [3,4] 15 > 2 + 1 • A2 [4,1] A2 [3,1] + A2 [4,3] A3 = 2 < 5 + 7 • A2 [4,2] A2 [3,2] + A2 [4,3] 5 < 8 + 7 • Ultima iteración • A3 [1,2] A3 [1,4] + A3 [4,2] 3 < 7 + 5 • A3 [1,3] A3 [1,4] + A3 [4,3] 5 < 7 + 7 • A3 [2,1] A3 [2,4] + A3 [4,1] 7 > 3 + 2 • A3 [2,3] A3 [2,4] + A3 [4,3] 2 < 3 + 7 • A3 [3,1] A3 [3,4] + A3 [4,1] 5 > 1 + 2 • A3 [3,2] A3 [3,4] + A3 [4,2] 8 > 1 + 5 1 2 3 4 1 0 3 5 6 2 7 0 2 3 3 5 8 0 1 4 2 5 7 0 1 2 3 4 1 0 6 2 0 3 3 0 1 4 2 5 7 0
  • 9. • La matriz queda de la forma. 1 2 3 4 1 0 3 5 6 2 5 0 2 3 3 3 6 0 1 4 2 5 7 0 1 2 4 3 7 8 2 1 2 3 5
  • 10. • Con las observaciones que se tuvo en el algoritmo, se puede definir de forma recursiva. • Donde se obtiene el siguiente seudocódigo
  • 11. Algoritmo de Johnson para grafos dispersos • Es también un algoritmo para encontrar el camino mas corto entre todos los pares de vértices de un grafo dirigido y disperso. • Permite que las aristas tengan pesos negativos, si bien ni permite ciclos de peso negativo. • Funciona utilizando el algoritmo de Bellman-Ford para hacer una transformación en el grafo inicial que elimina todas las aristas de peso negativo, permitiendo por lo tanto usar el algoritmo de Dijkstra en el grafo transformado.
  • 12. • Se tiene el siguiente grafo: • • Vértices = 5 • Aristas = 9 • Se le aumenta una arista para este algoritmo • V Vértices = 5 • Aristas = 14
  • 13. • h(1) = d(0,1) = 0 • h(2) = d(0,2) = 0 4 3 2 = 0-5+4 = -1 • h(3) = d(0,3) = 0 4 3=0-5=-5 • h(4) = d(0,4) = 0 4 = 0 • h(5) = d(0,5) = 0 1 5=-4 • Luego aplicamos la formula. • Donde: • w’(1,2) = w(1,2) + h(1) – h(2) = 3 + 0 – (-1) = 4
  • 14. • w’(1,3) =13 • w’(1,5) =0 • w’(2,4) =0 • w’(2,5) =10 • w’(3,2) = 0 • w’(4,1) = 0 • w’(4,3) = 2 • w’(5,4) = 2 • w’(0,1) = 0 • w’(0,2) = 1 • w’(0,3) = 5 • w’(0,4) = 0 • w’(0,5) = 4
  • 15. • Para el vértice ‘1’ • d’(1,1) = 0 • d’(1,2) = 2 • d’(1,3) = 2 • d’(1,4) = 2 • d’(1,5) = 0 • Para encontrar ‘d’ • d(u,v) = d’(u,v) – h(u) + h(v) • d(1,1) = d’(1,1) – h(1) + h(1) = 0 – 0 – 0 = 0 • d(1,2) = 1 • d(1,3) = -3 • d(1,4) = 2 • d(1,5) = -4
  • 16. • Para el vertice ‘2’ • d’(2,1) = 2 • d’(2,2) = 0 • d’(2,3) = 0 • d’(2,4) = 0 • d’(2,5) = 2 • Para encontrar ‘d’ • d(u,v) = d’(u,v) – h(u) + h(v) • d(2,1) = 3 • d(2,2) = 0 • d(2,3) = -4 • d(2,4) = 1 • d(2,5) = -1
  • 17. • Para el vertice ‘3’ • d’(3,1) = 2 • d’(3,2) = 0 • d’(3,3) = 0 • d’(3,4) = 0 • d’(3,5) = 2 • Para encontrar ‘d’ • d(u,v) = d’(u,v) – h(u) + h(v) • d(3,1) = 7 • d(3,2) = 4 • d(3,3) = 0 • d(3,4) = 5 • d(3,5) = 3
  • 18. • Para el vertice ‘4’ • d’(4,1) = 2 • d’(4,2) = 0 • d’(4,3) = 0 • d’(4,4) = 0 • d’(4,5) = 2 • Para encontrar ‘d’ • d(u,v) = d’(u,v) – h(u) + h(v) • d(4,1) = 2 • d(4,2) = -1 • d(4,3) = -5 • d(4,4) = 0 • d(4,5) = -2
  • 19. • Para el vertice ‘5’ • d’(5,1) = 4 • d’(5,2) = 2 • d’(5,3) = 2 • d’(5,4) = 2 • d’(5,5) = 0 • Para encontrar ‘d’ • d(u,v) = d’(u,v) – h(u) + h(v) • d(5,1) = 8 • d(5,2) = 5 • d(5,3) = 1 • d(5,4) = 6 • d(5,5) = 0
  • 20. • El seudocódigo del algoritmo es el siguiente. • Y su complejidad es de: