code: def add_edge(self, a, b):
          
          neighbors_of_a = self.adjacency_lists.get(a)
          if not neighbors_of_a:
              neighbors_of_a = set()
              self.adjacency_lists[a] = neighbors_of_a
  
          neighbors_of_a.add(b)
  
          neighbors_of_b = self.adjacency_lists.get(b)
          if not neighbors_of_b:
              neighbors_of_b = set()
              self.adjacency_lists[b] = neighbors_of_b
  
          neighbors_of_b.add(a)
docs: Used to add edges to the graph. 'a' and 'b' are vertexes and
          if 'a' or 'b' doesn't exisit then the vertex is created
  
          Args:
              a (hash): is one vertex of the edge
              b (hash): is another vertext of the edge