Пример #1
0
def asignar_backtracking(prefs):

#Primero se crea la planilla sobre la que se va a trabajar

  planilla = Planilla(prefs)
  #planilla_buena = asignar_random(prefs)
  
  if planilla.topicos_con_estudiante==prefs._cantidad:
      planilla_buena=planilla    
  else:
      for e in planilla.estudiantes_sin_topico(): 
          for t in planilla.topicos_sin_estudiante():
              #paso adelante
              planilla.asignar(e, t)
              #recursión
              planilla=asignar_backtracking(prefs)
              #guardo el mejor resultado
              if planilla.calcular_costo()<planilla_buena.calcular_costo():
                  planilla_buena=planilla
              #paso atrás
              planilla.desasignar(e, t)
  return(planilla_buena)              
Пример #2
0
from planilla import Preferencias, Planilla
prefs = Preferencias("Ejemplo3")
print(prefs)
# imprime {1: [2, 1, 3], 2: [1, 2, 3], 3: [1, 3, 2]}
print(prefs.estudiantes())
# imprime {1, 2, 3}
sol = Planilla(prefs)
print(sol)
# imprime {}
sol.asignar(1, 2)
print(sol.estudiantes_con_topico())  # imprime {1}
print(sol.topicos_sin_estudiante())  # imprime {1, 3}
print(sol)
# imprime {1: 2}
sol.asignar(1, 1)
# el estudiante 1 ya tenia topico
# sol.asignar(3, 2)
print(sol)
print(sol.calcular_costo())
print(sol.estudiante_libre(3))
sol.asignar(2, 1)
sol.asignar(3, 3)
print(sol)
print(sol.calcular_costo())
# el topico 2 no estaba disponible
# imprime {1: 2}
# imprime inf
# imprime True
# imprime {1: 2, 2: 1, 3: 3}
# imprime 1