code: func (g *UndirectedGraph) RemoveEdge(e graph.Edge) {
  	from, to := e.From(), e.To()
  	if _, ok := g.nodes[from.ID()]; !ok {
  		return
  	}
  	if _, ok := g.nodes[to.ID()]; !ok {
  		return
  	}
  
  	g.edges[from.ID()] = g.edges[from.ID()].Delete(to.ID())
  	g.edges[to.ID()] = g.edges[to.ID()].Delete(from.ID())
  }
docs: // RemoveEdge removes e from the graph, leaving the terminal nodes. If the edge does not exist
  // it is a no-op.