Advertisement
Guest User

Untitled

a guest
Jul 18th, 2018
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.49 KB | None | 0 0
  1. def backtracking(grafo, origen, ciudad_actual, ciudades_restantes, costo_actual, costo_min, trayecto):
  2.     if len(ciudades_restantes) == 0:
  3.         trayecto.append(origen)
  4.         ultimo_peso = grafo.obtener_arista_peso(ciudad_actual, origen)
  5.         if costo_min[0] == 0:
  6.             costo_min[0] = costo_actual + ultimo_peso
  7.             #copia el trayecto
  8.             costo_min[1] = list(trayecto)
  9.         if costo_actual + ultimo_peso < costo_min[0]:
  10.             costo_min[0] = costo_actual + ultimo_peso
  11.             #copia el trayecto
  12.             costo_min[1] = list(trayecto)
  13.     for v in grafo.obtener_adyacentes(ciudad_actual):
  14.         if v in ciudades_restantes:
  15.             peso_actual = grafo.obtener_arista_peso(ciudad_actual, v)
  16.             nuevo_costo = costo_actual + peso_actual
  17.             if costo_min[0] == 0 or nuevo_costo <= costo_min[0]:
  18.                 ciudades_restantes.pop(ciudades_restantes.index(v))
  19.                 #copia el trayecto
  20.                 ex = list(trayecto)
  21.                 #agrega la ciudad a la que voy al trayecto
  22.                 trayecto.append(v)
  23.                 backtracking(grafo, origen, v, ciudades_restantes, nuevo_costo, costo_min, trayecto)
  24.                 #recupero la copia del trayecto sin todo lo que se agregó en las llamadas recursivas
  25.                 trayecto = ex
  26.                 ciudades_restantes.append(v)   
  27.     return trayecto
  28.        
  29. def viajante(grafo, origen):
  30.     ciudades_restantes = []
  31.     costo_min = []
  32.  
  33.     costo_min.append(0)
  34.     costo_min.append([])
  35.     for v in grafo.obtener_vertices():
  36.         if v != origen:
  37.             ciudades_restantes.append(v)
  38.     backtracking(grafo, origen, origen, ciudades_restantes, 0, costo_min, [origen])
  39.     print(costo_min[0])
  40.     print(costo_min[1])
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement