Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Qu
e representan las componentes del vector s
Las componentes del vector s representa la tarea asignada por la persona que ocupa la
posicion i-esima del vector. Por ejemplo:
Si tenemos un vector s = {3, 2, 1}, podemos concluir que a la persona n
umero 1 se le ha
asignado la tarea 3, a la persona 2 se le ha asignado la tarea 2 y por u
ltimo a la persona 3
se le ha asignado la tarea 1. Generalizando a la persona i-esima se le asigna la tarea si .
Qu
e funci
on realiza la asignaci
on de una tarea a una persona
La funcion que va asignando las tareas a las personas es la funcion Generar. Cada vez
que se llama a esta funci
on, se le suma una unidad al elemento que indique la variable con
nombre nivel. Adem
as tambien calcula la ganancia actual y actualiza el vector usados
Qu
e comprueba la funci
on MasHermanos
La funcion MasHermanos lo que hace es comprobar si quedan asignaciones sin probar, las
cuales ser
an pesquisadas m
as adelante con la vuelta atras. Se explica mejor con un ejemplo
con un algoritmo de permutaciones (que en realidad, es lo que hace este programa). Imaginemos que tenemos un vector p = {a, b, c} al que le queremos hacer todas las permutaciones.
MasHermanos nada mas comenzar nos devolvera verdadero, ya que tenemos tres posibles
asignaciones para la primera vez: a, b, c. Si el primer elemento es a, en la segunda vuelta
la funcion nos seguira devolviendo verdadero, ya que quedaran por probar b y c. En la
u
ltima iteraci
on ya nos devolvera falso, puesto que solo podemos asignar c. Desde este
punto volveramos hacia atr
as.
Cu
al es el objetivo de la funci
on Retroceder
Retroceder sirve para recorrer todas las posibles soluciones al problema. En el caso de
el programa, la primera soluci
on encontrada sera s = {1, 2, 3}. Una vez llegados a este
punto, el algoritmo de BackTracking llamara a la funcion Retroceder que lo que hara
sera deshacer la u
ltima asignaci
on y explorar la posible solucion sustituyendo esa tarea por
la de un hermano. En nuestro caso, la siguiente solucion parcial es s = {1, 3, 2}.