Este documento describe métodos de recursión hacia adelante y hacia atrás. Explica un ejemplo de encontrar la ruta más segura para un viajero a través de estados utilizando recursión hacia adelante. También describe el problema clásico de las n reinas y cómo puede resolverse utilizando un enfoque de vuelta atrás.
1. REPÚBLICA BOLIVARIANA DE VENEZUELA.
INSTITUTO UNIVERSITARIO POLITECNICO
“SANTIAGO MARIÑO”
PROGRAMACIÓN NO NUMERICA II.
ENFOQUES.
Realizado por:
Br. Naylu Rincón
C.I V–20.534.435
Porlamar julio del 2014
ENFOQUES.
2. Métodos de recursión hacia adelante y hacia atrás.
Las recursiones hacia adelante y hacia atrás producen la misma solución. Aún cuando el
procedimiento hacia adelante parece más lógico, pero con frecuencia seria más usado la
recursión hacia atrás. La razón de la preferencia de la recursión es que, en general, la
recursión hacia atrás puede ser más eficiente desde el punto de vista de los cálculos.
Para mostrar un ejemplo de la recursión hacia adelante, veremos que los cálculos
avanzaran de la etapa 1 a la etapa final. Y por medio de la recursión hacia atrás se pueden
resolver empezando de la etapa final y terminando de la etapa 1.
El objetivo del recorrido es encontrar soluciones para algún problema. Esto se consigue
construyendo soluciones parciales a medida que progresa el recorrido; estas soluciones
parciales limitan las regiones en las que se puede encontrar una solución completa. El
recorrido tiene éxito si, procediendo de esta forma, se puede definir por completo una
solución. En este caso el algoritmo puede, o bien detenerse (si lo único que se necesita es
una solución del problema) o bien seguir buscando soluciones alternativas (si deseamos
examinarlas todas). Por otra parte, el recorrido no tiene éxito si en alguna etapa la solución
parcial construida hasta el momento no se puede completar. En tal caso, el recorrido vuelve
atrás exactamente igual que en un recorrido en profundidad, eliminando sobre la marcha los
elementos que se hubieran añadido en cada fase. Cuando vuelve a un nodo que tiene uno
o más vecinos sin explorar, prosigue el recorrido de una solución.
3. Algoritmo que sigue la técnica
de vuelta hacia atrás:
PROCEDURE VueltaAtras(etapa);
BEGIN
Ejemplo de recursión hacia adelante
BEGIN
IniciarOpciones;
REPEAT
SeleccionarNuevaOpcion;
IF Aceptable THEN
AnotarOpcion;
IF SolucionIncompleta THEN
VueltaAtras(etapa_siguiente);
IF NOT exito THEN
CancelarAnotacion
END
ELSE (* solucion completa *)
exito:=TRUE
END
END
UNTIL (exito) OR (UltimaOpcion)
END VueltaAtras;
Diagrama del problema a resolver
de recursión hacia adelante.
4. Este problema se refiere a un vendedor mítico que tuvo que viajar hacia el oeste utilizando como medio de transporte una
diligencia, a través de tierras hostiles, en el último cuarto del siglo XIX.
Aún cuando su punto de partida y destino eran fijos, tenía un número considerable de opciones para elegir qué estados (o
territorios que posteriormente se convirtieron en estados) recorrer en su ruta como se observa en el diagrama anterior.
Del grafico se puede observar que el viaje se puede realizar en 4 etapas, partiendo del estado 1 hasta su destino en el
estado 10.
Problema a desarrollar de recursión
hacia adelante.
estado 10.
Primera etapa: estados 1 y (2, 3, 4) 5
Segunda etapa: estados (2, 3,4) y (5, 6, 7)
Tercera etapa: estados (5,6,7) y (8, 9)
Cuarta etapa: estado (8,9) y10
Puesto que se ofrecían seguros de vida a los pasajeros de las diligencias, este vendedor no quiso dejar pasar la
oportunidad y se propuso determinar la ruta más segura. Como el costo de cada póliza se basaba en una evaluación
cuidadosa de la seguridad de ese recorrido, la ruta más segura debía ser aquella con la póliza de seguro de vida más barata.
El costo de la póliza estándar para el viaje en diligencia del estado 1 al 10 se muestra en Ilustración como una etiqueta en
los caminos (flechas) para ir de un estado a otro.
A continuación se explican los detalles involucrados en la implementación de esta filosofía general. La idea es calcular el
costo mínimo (acumulativo) de la póliza de seguros entre los dos estados de cada etapa y después utilizar esos costos como
datos de entrada para la etapa inmediata siguiente.
8. Calculo para la etapa 4
Los resultados para estas etapas serian:
El costo mínimo total desde el estado 1 al estado es de 11.
El estado 10 se puede alcanzar desde los estados 8 y 9.
Si se elige el estado 9, este proviene de haber elegido el estado 6, el cual a su vez de haber elegido el
estado 4 y finalmente el estado 1.
Es decir la ruta óptima es 1TM, 4TM, 6TM, 9TM y 10.
Si se elige el estado 8, este proviene de haber elegido el estado 5, el cual a su vez de haber elegido el
estado 4 o 3.
Si se elige el estado 4, la ruta óptima es 1TM, 4TM, 5TM, 8TM y 10.
Si se elige el estado 3, la ruta óptima es 1TM, 3TM, 5TM, 8TM y 10.
9. Problema de las n Reinas:
Este es un problema clásico que puede ser resuelto con un diseño Vuelta Atrás es el denominado de las ocho reinas y en
general, de las n reinas. Disponemos de un tablero de ajedrez de tamaño 8x8, y se trata de colocar en él ocho reinas de
manera que no se amenacen según las normas del ajedrez, es decir, que no se encuentren dos reinas ni en la misma fila, ni
en la misma columna, ni en la misma diagonal.
Numeramos las reinas del 1 al 8. Cualquier solución a este problema estará representada por una “X” en la que cada una
representa la columna donde la reina de la fila, columna es colocada.
Para decidir en cada etapa cuáles son los valores que puede tomar cada uno de los elementos “X” hemos de tener en
cuenta lo que hemos denominado restricciones a fin de que el número de opciones en cada etapa sea el menor posible. Encuenta lo que hemos denominado restricciones a fin de que el número de opciones en cada etapa sea el menor posible. En
los algoritmos Vuelta Atrás podemos diferenciar dos tipos de restricciones:
Restricciones explícitas. Formadas por reglas que restringen los valores que pueden tomar los elementos “X” a un
conjunto determinado. En nuestro problema este conjunto es S = {1,2,3,4,5,6,7,8}.
Restricciones implícitas. Indican la relación existente entre los posibles valores de las “X” para que éstos puedan formar
parte de una n-secuencia solución. En el problema que nos ocupa podemos definir dos restricciones implícitas. En primer
lugar sabemos que dos reinas no pueden situarse en la misma columna y por tanto no puede haber dos “X” iguales
(obsérvese además que la propia definición de la secuencia impide situar a dos reinas en la misma fila, con lo cual tenemos
cubiertos los dos casos, el de las filas y el de las columnas). Por otro lado sabemos que dos reinas no pueden estar en la
misma diagonal, lo cual reduce el número de opciones. Esta condición se refleja en la segunda restricción implícita que, en
forma de ecuación, puede ser expresada como |x – x’| ≠ |y – y’|, siendo (x,y) y (x’,y’) las coordenadas de dos reinas en el
tablero.
De esta manera, y aplicando las restricciones, en cada etapa iremos generando sólo las etapas con
posibilidad de solución. Y obtendremos así las posiciones donde irían ubicadas todas las n reinas como se
muestra en el siguiente tablero: