Guest User

Untitled

a guest
Jul 19th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.22 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # Breadth-First Search in Python
  3. from collections import deque
  4.  
  5. class Node:
  6. def __init__(self, identifier):
  7. self.identifier = identifier
  8. self.adjacencies = []
  9. self.marked = False
  10.  
  11. def addArrayOfAdjacencies(self, adj_list):
  12. for adjacency in adj_list:
  13. self.adjacencies.append(adjacency)
  14.  
  15. node_a = Node('a')
  16. node_b = Node('b')
  17. node_c = Node('c')
  18. node_d = Node('d')
  19. node_e = Node('e')
  20. node_f = Node('f')
  21.  
  22. node_a.addArrayOfAdjacencies([node_b, node_c, node_d])
  23. node_b.addArrayOfAdjacencies([node_a, node_e, node_f])
  24. node_c.addArrayOfAdjacencies([node_a, node_f])
  25. node_d.addArrayOfAdjacencies([node_a])
  26. node_e.addArrayOfAdjacencies([node_b])
  27. node_f.addArrayOfAdjacencies([node_b, node_c])
  28.  
  29. def bfs(source):
  30. queue = deque([])
  31. result = []
  32. queue.append(source)
  33. source.marked = True
  34. result.append(source)
  35. while not len(queue) == 0:
  36. v = queue.popleft()
  37. for adjacency in v.adjacencies:
  38. if not adjacency.marked:
  39. adjacency.marked = True
  40. result.append(adjacency)
  41. queue.append(adjacency)
  42. return result
  43.  
  44. bfs_result = bfs(node_a)
  45. for node in bfs_result:
  46. print node.identifier
Add Comment
Please, Sign In to add comment