code: def reformulate_atsp_as_tsp(edges):
      
      incident, nodes = node_to_edge(edges, directed=False)
      new_edges = []
      for a, b, w in edges:
          new_edges.append(((a, '*'), b, w))
      for n in nodes:
          new_edges.append((n, (n, '*'), NEG_INF))  # A negative weight
      return new_edges
docs: To reformulate the ATSP as a TSP, for each city a dummy city (e.g, for New
      York, a dummy city New York* is added. Between each city and its
      corresponding dummy city a negative or very small distance with value cheap
      is used. This makes sure that each cities always occurs in the solution
      together with its dummy city. The original distances are used between the
      cities and the dummy cities, where each city is responsible for the distance
      going to the city and the dummy city is responsible for the distance coming
      from the city. The distances between all cities and the distances between
      all dummy cities are set to infeasible.