Advertisement
Guest User

Floyd-Warshall

a guest
Nov 14th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. def FloydWarshall(g):
  2. distancia = [[INF] * len(g) for i in range(len(g))]
  3. predecesor = [[(-1,-1)] * len(g) for i in range(len(g))]
  4. for i in range(len(g)):
  5. distancia[i][i] = 0
  6. for u,v in g[i]:
  7. distancia[i][u] = v
  8. predecesor[i][u] = (i,v)
  9. for k in range(len(g)):
  10. for i in range(len(g)):
  11. for j in range(len(g)):
  12. if distancia[i][j] > distancia[i][k] + distancia[k][j]:
  13. distancia[i][j] = distancia[i][k] + distancia[k][j]
  14. predecesor[i][j] = (k,distancia[k][j])
  15. return distancia,predecesor
  16.  
  17. print(FloydWarshall(g))
  18.  
  19. def hacerRecorridosFloydWarshall(g):
  20. d, p = FloydWarshall(g)
  21. recorrido = [[]]
  22. for u in range(len(p)):
  23. recorrido += [[]]
  24. for v in range(len(p)):
  25. if p[u][v][0] > -1:
  26. recorrido[u] += [(p[u][v][0],v,p[u][v][1])]
  27. return recorrido
  28.  
  29. hacerRecorridosFloydWarshall(g)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement