-
Notifications
You must be signed in to change notification settings - Fork 1
/
Floyd.py
35 lines (29 loc) · 1.15 KB
/
Floyd.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
def floyd_warshall(graph):
n = len(graph)
dist = [[graph[i][j] for j in range(n)] for i in range(n)] # Inicializa la matriz con los valores del grafo inicial
print("Matriz inicial de distancias:")
for row in dist:
print(row)
print("\n")
for k in range(n): # Se aplica el algoritmo
print(f"Usando nodo intermedio {k}:")
for i in range(n):
for j in range(n): # Se actualiza la distancia si se encuentra un camino más corto
if dist[i][j] > dist[i][k] + dist[k][j]:
print(f"Actualizando dist[{i}][{j}]: {dist[i][j]} -> {dist[i][k] + dist[k][j]}")
dist[i][j] = dist[i][k] + dist[k][j]
print("Matriz de distancias actualizada:")
for row in dist:
print(row)
print("\n")
return dist
graph = [
[0, 3, float('inf'), 5],
[2, 0, float('inf'), 4],
[float('inf'), 1, 0, float('inf')],
[float('inf'), float('inf'), 2, 0]
]
distances = floyd_warshall(graph)
print("Matriz final de distancias mínimas entre cada par de nodos:")
for row in distances:
print(row)