Advertisement
Guest User

Untitled

a guest
May 25th, 2015
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.99 KB | None | 0 0
  1. def dijkstra():
  2. global graph
  3. global edge
  4. s = int(input("Vertex1:"))
  5. end=int(input("Vertex2:"))
  6. prev = {}
  7. q = PriorityQueue()
  8. q.add(s, 0)
  9. d = {}
  10. d[s] = 0
  11. visited = set()
  12. visited.add(s)
  13. while not q.isEmpty():
  14. x = q.pop()
  15. for y in graph.outV(x):
  16. if edge.getProperty(x, y,False) is not -1:
  17. if y not in visited or d[y] > d[x] + edge.getProperty(x, y,False):
  18. d[y] = d[x] + edge.getProperty(x, y,False)
  19. visited.add(y)
  20. q.add(y, d[y])
  21. prev[y] = x
  22. if (graph.min_distance(s, end)!=-1):
  23. sum=0
  24. path=[]
  25. while(end != s):
  26. sum+=edge.getProperty(prev[end],end,False)
  27. path.append(end)
  28. end=prev[end]
  29. path.append(s)
  30. path=path[::-1]
  31. print("Path:",path,"\nMinimum cost:",sum)
  32. else:
  33. print("There is no path between those vertices")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement