Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
SAN MARCOS
(Universidad del Perú, Decana de
América)
MATEMÁTICAS DISCRETAS - G3
BACKTRACKING
INTEGRANTES:
ÍNDICE
INTRODUCCIÓN ............................................................................................................................. 3
ESTUDIOS PREVIOS........................................................................................................................ 4
NATURALEZA Y APLICACIÓN ......................................................................................................... 6
PROBLEMA GENERAL ................................................................................................................... 6
DESARROLLO DEL ALGORITMO ..................................................................................................... 8
CONCLUSIÓN ............................................................................................................................... 12
2
[Algorítmica II] [UNMSM]
INTRODUCCIÓN
BÚSQUEDA EN RETROCESO
3
[Algorítmica II] [UNMSM]
ESTUDIOS PREVIOS
El backtracking fue concebida por Lehmer como una estrategia usada para
encontrar soluciones a problemas que poseen solución completa Estos
problemas consisten en un conjunto (o lista) de variables a la que a cada una
se le debe asignar un valor sujeto a las restricciones del problema. La técnica
va creando todas las posibles combinaciones de elementos para obtener una
solución. Su principal virtud es que en la mayoría de las implementaciones se
puede evitar combinaciones, estableciendo funciones de acotación (o poda)
reduciendo el tiempo de ejecución.
El recorrido tiene éxito si, procediendo de esta forma, se puede definir por
completo una solución. En este caso el algoritmo puede 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.
4
[Algorítmica II] [UNMSM]
1. Problemas de Decisión:
2. Problemas de Optimización:
5
[Algorítmica II] [UNMSM]
NATURALEZA Y APLICACIÓN
Esencialmente, la idea es encontrar la mejor combinación posible en un
momento determinado, por eso, se dice que este tipo de algoritmo es
una búsqueda en profundidad. Durante la búsqueda, si se encuentra una
alternativa incorrecta, la búsqueda retrocede hasta el paso anterior y toma la
siguiente alternativa. Cuando se han terminado las posibilidades, se vuelve a la
elección anterior y se toma la siguiente opción (hijo [si nos referimos a un
árbol]). Si no hay más alternativas la búsqueda falla. De esta manera, se crea
un árbol implícito, en el que cada nodo es un estado de la solución (solución
parcial en el caso de nodos interiores o solución total en el caso de los nodos
hoja).
PROBLEMA GENERAL
6
[Algorítmica II] [UNMSM]
7
[Algorítmica II] [UNMSM]
8
[Algorítmica II] [UNMSM]
Dónde:
9
[Algorítmica II] [UNMSM]
En los casos planteados se toma como posición inicial las coordenadas (1,1)
siendo esta la que representa al inicio del laberinto, por ende, se toma como
final del laberinto a la esquina opuesta, al llegar a esta la función se deja de
llamarse recursivamente y retorna el ultimo nodo. La función
cargar_posibles_caminos es vital para el funcionamiento del programa, esta se
encarga de verificar en qué dirección se puede seguir caminando en base a la
posición actual y al paso anterior que realizamos. Cada vez que una celda
vecina esta libre y se puede avanzar hacia ella, esta función asigna memoria y
crea un nuevo nodo en función de los datos actuales y lo almacena en una de
las ramas del nodo actual.
10
[Algorítmica II] [UNMSM]
Una vez cargados los caminos posibles, cada rama del nodo actual representa
un camino que seguir, entonces se evalúan una a una mediante la misma
función de backtracking. El hecho que la función retorne el último elemento del
árbol, el cual representa el fin del laberinto hace posible que a partir de este se
recorra el árbol de forma inversa y se pueda construir un nuevo árbol de forma
muy simple eliminando los demás nodos que no pertenecen a la solución.
Por ello este proyecto para cajero tiene la función para entregar dinero con
menos número de billetes y monedas que posea el cajero, para que el usuario
no tenga que llevar tantos billetes y/o monedas consigo, siendo más eficiente
su función satisfaciendo las necesidades del usuario.
11
[Algorítmica II] [UNMSM]
Este proyecto se puede usar para los cajeros automáticos que vemos hoy en
día en diferentes zonas de ciudades en cada país e incluso en diferentes
supermercados y así poder llevar más dinero en pocos billetes y/o monedas
volviéndose más cómodo y menos pesado su uso
CONCLUSIÓN
El backtracking es un esquema algorítmico que nos va a permitir resolver una
gran variedad de tipos de problemas, pero, por término medio, es sumamente
costoso (en cuanto a complejidades temporales se refiere) debido al tamaño
que adoptan sus espacios de búsqueda. Aplicándole una serie de mejoras
podremos conseguir que dicho espacio mengue para reducir en lo posible las
altas complejidades que suelen tener.
12