def underlying_graph(G): r""" Given a graph `G` with multi-edges, returns a graph where all the multi-edges are replaced with a single edge. EXAMPLES:: sage: from sage.graphs.tutte_polynomial import underlying_graph sage: G = Graph(multiedges=True) sage: G.add_edges([(0,1,'a'),(0,1,'b')]) sage: G.edges() [(0, 1, 'a'), (0, 1, 'b')] sage: underlying_graph(G).edges() [(0, 1, None)] """ g = Graph() g.allow_loops(True) for edge in set(G.edges(labels=False)): g.add_edge(edge) return g