Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Graph:
- def __init__(self, nrVertices):
- self._dictOut = {}
- self._dictIn = {}
- self._nrVertices = nrVertices
- for x in range(nrVertices):
- self._dictOut[x] = []
- self._dictIn[x] = []
- def get_nr_vertices(self):
- return self._nrVertices
- def get_dict_keys(self):
- return self._dictOut.keys()
- def add_vertex(self, vertex):
- self._dictOut[vertex] = []
- self._dictIn[vertex] = []
- self._nrVertices += 1
- def remove_vertex(self, vertex):
- removed = []
- for x in self._dictOut[vertex]:
- removed.append((vertex, x))
- self._dictIn[x].remove(vertex)
- for x in self._dictIn[vertex]:
- removed.append((x, vertex))
- self._dictOut[x].remove(vertex)
- del self._dictOut[vertex]
- del self._dictIn[vertex]
- self._nrVertices -= 1
- return removed
- def add_edge(self, start_vertex, end_vertex):
- if end_vertex not in self._dictOut[start_vertex]:
- self._dictOut[start_vertex].append(end_vertex)
- if start_vertex not in self._dictIn[end_vertex]:
- self._dictIn[end_vertex].append(start_vertex)
- def remove_edge(self, start_vertex, end_vertex):
- self._dictOut[start_vertex].remove(end_vertex)
- self._dictIn[end_vertex].remove(start_vertex)
- def is_edge(self, start_vertex, end_vertex):
- if end_vertex in self._dictOut[start_vertex]:
- return True
- return False
- def vertex_degree(self, vertex):
- return [len(self._dictIn[vertex]), len(self._dictOut[vertex])]
- def outbound(self, vertex):
- return self._dictOut[vertex]
- def inbound(self, vertex):
- return self._dictIn[vertex]
- def __str__(self):
- message = "Outbound\n"
- new_dict = self._dictOut.items()
- for k, v in new_dict:
- message += str(k) + ":" + str(v) + "\n"
- message += "Inbound\n"
- new_dict = self._dictIn.items()
- for k, v in new_dict:
- message += str(k) + ":" + str(v) + "\n"
- return message
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement