def add_edge(self, a, b):
neighbors_of_a = self.adjacency_lists.get(a)<EOL>if not neighbors_of_a:<EOL><INDENT>neighbors_of_a = set()<EOL>self.adjacency_lists[a] = neighbors_of_a<EOL><DEDENT>neighbors_of_a.add(b)<EOL>neighbors_of_b = self.adjacency_lists.get(b)<EOL>if not neighbors_of_b:<EOL><INDENT>neighbors_of_b = set()<EOL>self.adjacency_lists[b] = neighbors_of_b<EOL><DEDENT>neighbors_of_b.add(a)<EOL>
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