Backtracking es una técnica de resolución de problemas que implica probar diferentes secuencias de decisiones de manera metódica hasta encontrar una solución. Se utiliza para resolver problemas donde se elige una secuencia de objetos de un conjunto de modo que satisfaga cierto criterio, y funciona realizando una búsqueda en profundidad modificada de un árbol, volviendo atrás cuando un nodo no conduce a una solución. El algoritmo de backtracking se basa en una búsqueda recursiva en profundidad que comprueba primero si se ha encontrado una
2. BACKTRACKING
• Supongamos que tienes que tomar una serie de decisiones,
entre varias opciones, donde no cuentas con la suficiente
información para saber qué elegir. Cada decisión conduce a
un nuevo conjunto de opciones, algunas secuencia de
elecciones (posiblemente más de una) puede ser una solución
al problema
• Backtracking es una forma metódica de probar varias
secuencias de decisiones, hasta encontrar la correcta que
"funciona".
3. BACKTRACKING
• Backtracking se utiliza para resolver problemas en los que se
elige una secuencia de objetos a partir de un conjunto
específico de modo que la secuencia satisface cierto criterio.
• Backtracking es una búsqueda en profundidad modificada de
un árbol.
• Es el procedimiento por el cual, después de determinar que
un nodo puede conducir a otra cosa que los nodos muertos,
volvemos ("dar marcha atrás") a los padres del nodo y
procedemos a la búsqueda en el siguiente hijo.
4. ALGORITMO
• Basado en la búsqueda de profundidad recursiva.
• ¿Como empezamos?
1. Comprueba si se ha encontrado una solución.
2. Si se encuentra una solución, retornarla.
3. Si no en cada elección que se pueda hacer:
• Haz la elección.
• Vuelve atrás.
• Si la recursividad devuelve una solución, retornarla
4. Si no hay mas opciones, retorna que no hay solución.
• Algunas veces es llamado "árbol de búsqueda"
5. EJEMPLOS
• Podemos encontrar el uso de backtracking en
estos retos:
– Resolver un laberinto.
– Colorear un mapa.
– La solución de un rompecabezas.
– problema de las N reinas.
6. EJEMPLO
• En este ejemplo
podemos ver la
secuencia que sigue
el algoritmo para
dar una solución a
un problema.
7. EJEMPLO
• En esta pieza de código
podemos ver que
secuencia de ordenes usa
para lograr dar una
respuesta correcta.