<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_edge(self, fr, to):
 """ Add an edge to the graph. Multiple edges between the same vertices will quietly be ignored. N-partite graphs can be used to permit multiple edges by partitioning the graph into vertices and edges. :param fr: The name of the origin vertex. :param to: The name of the destination vertex. :return: """

        fr = self.add_vertex(fr)
        to = self.add_vertex(to)
        self.adjacency[fr].children.add(to)
        self.adjacency[to].parents.add(fr)