Advertisement
Guest User

graph

a guest
Mar 24th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.17 KB | None | 0 0
  1. class Graph:
  2. def __init__(self, nrVertices):
  3. self._dictOut = {}
  4. self._dictIn = {}
  5. self._nrVertices = nrVertices
  6. for x in range(nrVertices):
  7. self._dictOut[x] = []
  8. self._dictIn[x] = []
  9.  
  10. def get_nr_vertices(self):
  11. return self._nrVertices
  12.  
  13.  
  14. def get_dict_keys(self):
  15. return self._dictOut.keys()
  16.  
  17.  
  18. def add_vertex(self, vertex):
  19. self._dictOut[vertex] = []
  20. self._dictIn[vertex] = []
  21. self._nrVertices += 1
  22.  
  23.  
  24. def remove_vertex(self, vertex):
  25. removed = []
  26. for x in self._dictOut[vertex]:
  27. removed.append((vertex, x))
  28. self._dictIn[x].remove(vertex)
  29. for x in self._dictIn[vertex]:
  30. removed.append((x, vertex))
  31. self._dictOut[x].remove(vertex)
  32.  
  33. del self._dictOut[vertex]
  34. del self._dictIn[vertex]
  35. self._nrVertices -= 1
  36. return removed
  37.  
  38.  
  39. def add_edge(self, start_vertex, end_vertex):
  40. if end_vertex not in self._dictOut[start_vertex]:
  41. self._dictOut[start_vertex].append(end_vertex)
  42.  
  43. if start_vertex not in self._dictIn[end_vertex]:
  44. self._dictIn[end_vertex].append(start_vertex)
  45.  
  46.  
  47. def remove_edge(self, start_vertex, end_vertex):
  48. self._dictOut[start_vertex].remove(end_vertex)
  49. self._dictIn[end_vertex].remove(start_vertex)
  50.  
  51. def is_edge(self, start_vertex, end_vertex):
  52. if end_vertex in self._dictOut[start_vertex]:
  53. return True
  54. return False
  55.  
  56. def vertex_degree(self, vertex):
  57. return [len(self._dictIn[vertex]), len(self._dictOut[vertex])]
  58.  
  59. def outbound(self, vertex):
  60. return self._dictOut[vertex]
  61.  
  62. def inbound(self, vertex):
  63. return self._dictIn[vertex]
  64.  
  65. def __str__(self):
  66. message = "Outbound\n"
  67. new_dict = self._dictOut.items()
  68. for k, v in new_dict:
  69. message += str(k) + ":" + str(v) + "\n"
  70. message += "Inbound\n"
  71. new_dict = self._dictIn.items()
  72. for k, v in new_dict:
  73. message += str(k) + ":" + str(v) + "\n"
  74. return message
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement