21
Técnica del Backtracking o Vuelta Atrás Esperanza Terán Jiménez

Técnica del backtracking o vuelta atrás

Embed Size (px)

Citation preview

Page 1: Técnica del backtracking o vuelta atrás

Técnica del Backtracking o Vuelta AtrásEsperanza Terán Jiménez

Page 2: Técnica del backtracking o vuelta atrás

¿Qué es la Técnica del Backtracking ?•  es un esquema que genera TODAS las secuencias

posibles de decisiones.• Vuelta Atrás, de forma sistemática y organizada,

genera y recorre un espacio que contiene todas las posibles secuencias de decisiones. 

•  Este espacio se denomina el espacio de búsqueda del problema. Una de las primeras implicaciones de esta forma de resolver el problema es que, si el problema tiene solución, Vuelta Atrás seguro que la encuentra.

Page 3: Técnica del backtracking o vuelta atrás

Figura de ejemplo• La siguiente figura muestra un posible espacio de

búsqueda asociado a un problema en el que hay k decisiones que tomar (son las que definen la altura del espacio), y en el que cada decisión tiene asociado un dominio formado por j valores distintos, que son los que determinan la anchura del espacio. 

Page 4: Técnica del backtracking o vuelta atrás
Page 5: Técnica del backtracking o vuelta atrás

• Habitualmente el espacio de búsqueda es un árbol, aunque puede ser un grafo, como en el caso de los grafos de juego. Si en el árbol hay un gran número de nodos repetidos y se dan otras condiciones adicionales, es posible que el problema se pueda resolver aplicando el esquema de Programación Dinámica.

Page 6: Técnica del backtracking o vuelta atrás

características• La caracterización de los problemas que son solubles

aplicando este esquema no es muy distinta de otras Técnicas de Análisis y Diseño y se utiliza la misma terminología como, por ejemplo, decisión, restricción, solución, solución en curso, etc. algunas de las características de estos problemas:

• Se trata generalmente de problemas de optimización, con o sin restricciones.

• La solución es expresable en forma de secuencia de decisiones.

• Existe una función denominada factible que permite averiguar si en una secuencia de decisiones, la solución en curso actual, viola o no las restricciones.

• Existe una función, denominada solución , que permite determinar si una secuencia de decisiones factible es solución al problema planteado.  

Page 7: Técnica del backtracking o vuelta atrás

Elementos de la técnica• Al diseñar un algoritmo backtraking debemos considerar los• siguientes elementos:• Representación de la solución en una tupla (X1; : : : ; Xn)• Una función objetivo para determinar si la tupla a analizar es• una solución• Unas restricciones a los candidatos para rellenar la tupla:• Implícitas del problema. Valores que puede tomar cada valor• Xi• Explícitas o externas al problema. Por ejemplo, problema• mochila, el peso no debe superar la capacidad de la mochila• Una función de poda para eliminar partes del árbol de• búsqueda• Organización del problema en un árbol de búsqueda.

Page 8: Técnica del backtracking o vuelta atrás

Búsqueda en el árbol de estados• Construir la solución al problema en distintas

etapas.• En cada paso se elige un candidato y se añade a

la solución, y se avanza en la solución parcial.• Si no es posible continuar en la construcción hacia

una solución completa, se abandona ésta y la última componente se cambia por otro valor.

• Si no quedan más valores por probar, se retrocede al candidato anterior, se desecha, y se selecciona otro candidato.

Page 9: Técnica del backtracking o vuelta atrás

Búsqueda en el árbol de estados

Page 10: Técnica del backtracking o vuelta atrás

Diseño de la técnica• Buscar una representación del tipo (X1; X2; : : : ; Xn) para las• soluciones del problema• Identificar las restricciones implícitas y explícitas del• problema• Establecer la organización del árbol que define los• diferentes estados en los que se encuentra una (sub)solución• Definir una función solución para determinar si una tupla es• solución• Definir una función de poda Bk(X1; X2; : : : ; Xk) para• eliminar ramas del árbol que puedan derivar en soluciones

poco• deseables o inadeciadas• Aplicar la estructura genérica de un algoritmo backtracking

Page 11: Técnica del backtracking o vuelta atrás

Diseño de la tecnica• solucion[i]2Si para i=1,2,...,n

(Algoritmo genérico backtracking)

funcion BACKTRACKING_REC ( k , solucion[n])

para j2Si

si ( PODA (k , j , solucion) == true ) hacer

sol[k]= j

si ( TEST_SOL (solucion) == true ) hacer

devolver solucion

si ( k < n )

BACKTRACKING_REC(k+1,solucion[n])

Page 12: Técnica del backtracking o vuelta atrás

Eficiencia• suele ser de tipo exponencial .• depende de la ramificación del árbol• del tiempo de ejecución de la función solución• del tiempo de ejecución de la función poda• del ahorro de utilizar la poda• Nota: las buenas funciones de poda no son muy

eficientes

Page 13: Técnica del backtracking o vuelta atrás

Implementación• procedimiento backtrack (x[1..n]) {• k=1;• while (k>0) {• if ( queda algún x[k] no probado tal que• X[k]∈T(x[1..k-1]) && Bk(x[1..k]) ) {• if (x[1..k] es un camino hasta un nodo respuesta)• print ( x[1..k] ); // Mostrar solución x[1..k]• k = k+1;• } else {• k = k-1;• }• }• }

Page 14: Técnica del backtracking o vuelta atrás

Implementación recursiva• Llamada inicial: backtrack(x,1);• procedimiento backtrack ( x[1..n], k)• {• foreach foreach (x[k]∈T(x[1..k T(x[1..k-1]) { • if ( Bk(x[1..k]) ) {• if (x[1..k] es un camino hasta un nodo respuesta)• print ( x[1..k] ); // Mostrar solución x[1..k]• backtrack (x, k+1);• }• }• }

Page 15: Técnica del backtracking o vuelta atrás

ejemplo• El problema de las ocho reinas se puede plantear

de modo general como problema de las  reinas. El problema consistiría en colocar  reinas en un tablero de ajedrez de  de tal manera que ninguna de las reinas quede atacando a otra.

• Su análisis y solución es isomorfo al de las ocho reinas.

• Número de soluciones:

Page 16: Técnica del backtracking o vuelta atrás

Solución al problema de las ocho reinas• El problema de las ocho reinas tiene 92

soluciones, de las cuales 12 son esencialmente distintas, es decir las 92 soluciones existentes se pueden obtener a partir de simetrías, rotaciones y traslaciones de las 12 soluciones únicas, que se muestran a continuación:

Page 17: Técnica del backtracking o vuelta atrás
Page 18: Técnica del backtracking o vuelta atrás
Page 19: Técnica del backtracking o vuelta atrás
Page 20: Técnica del backtracking o vuelta atrás
Page 21: Técnica del backtracking o vuelta atrás

•gracias