Professional Documents
Culture Documents
Tema VI Backtracking
1
Introducci on T ecnicas de Vuelta Atr as Conceptos Generales El Problema de las N -Reinas El Problema del Laberinto Extensiones Backtracking para Enumeraci on Backtracking para Optimizaci on
Carlos Cotta
2 Departamento de Lenguajes y Ciencias de la Computaci on Universidad de M alaga http://www.lcc.uma.es/ccottap
Backtracking
Backtracking
Recapitulaci on
En el u ltimo tema se presentaron las t ecnicas voraces. Se plantea el problema como una secuencia de decisiones de manera que: Dichas decisiones de forma miope, intentando maximizar el benecio inmediato. Las decisiones son irreversibles. No hay vuelta atr as. Este enfoque es suciente para resolver adecuadamente muchos problemas de inter es. Incluso si un enfoque de este tipo no garantiza encontrar la soluci on optima, puede que en muchos casos proporcione soluciones de calidad aceptable.
A pesar de la simplicidad de los enfoques voraces, estos no siempre son satisfactorios: En alg un problema puede que las soluciones que proporciona sean de calidad insuciente. Si el problema presenta restricciones, es posible que no sea capaz de construir siquiera una soluci on v alida. Si se desea encontrar una soluci on con ciertas caracter sticas, es necesario en general que las decisiones no sean irreversibles, y que se pueda realizar vuelta atr as.
C. Cotta
Backtracking
C. Cotta
Backtracking
Idea B asica
Idea B asica
De manera m as precisa, el funcionamiento de las t ecnicas de vuelta atr as es como sigue:
1 2
Al igual que en programaci on din amica o en los enfoques voraces abordamos el problema como una secuencia de decisiones (i.e., estamos una vez m as ante un m etodo constructivo). En cada etapa de la resoluci on del problema puede haber m as de una posible decisi on, en cuyo caso elegimos una de acuerdo a alg un criterio. Nos reservamos el derecho a revertir esa decisi on si m as adelante vemos que es preciso, e.g., si llegamos a un camino sin salida en la construcci on de la soluci on.
Partimos de una soluci on totalmente inespecicada. En cada momento se examinan las posibilidades para extender la soluci on parcial.
1
Si hay una o m as, elegimos una de ellas, y continuamos a partir de ah . Si no hay forma de extender la soluci on actual, se deshace la decisi on anterior, i.e., se vuelve atr as y se considera otra posibilidad distinta a la que se consider o antes.
Nos detenemos en el momento en que hemos encontrado una soluci on de las caracter sticas deseadas.
Pseudoc odigo
Bactracking proc Bactracking (X [1 . . . i ]: TSoluci on, ok : B) variables L: ListaComponentes inicio si EsSoluci on(X ) entonces ok CIERTO en otro caso ok FALSO L Candidatos(X ) mientras ok Vac a(L) hacer X [i + 1] Cabeza(L); L Resto(L) Backtracking (X , ok ) nmientras nsi n
C. Cotta Backtracking
Arbol de B usqueda
(1)
X1
(3) (4) (6)
X2
(9)
X3
(10)
X11
(5)
X12 X121
X13
X31
X32
(11)
X321
(12)
X3211
C. Cotta
Backtracking
Consideraciones
Dependiendo de la estructura del problema y de la naturaleza de las decisiones es posible que surjan los mismos subproblemas en diferentes ramas del arbol de b usqueda. Cada vez que se hace vuelta atr as se est a podando una parte del arbol de b usqueda: nos ahorramos considerar todas las decisiones pendientes en ese punto. En el peor caso el proceso puede ser muy ineciente, y reducirse a fuerza bruta (b usqueda exhaustiva de todas las combinaciones posibles).
Cada v ertice del grafo es un posible estado de la soluci on del problema. Cada arco del grafo representa la transici on entre dos estados de la soluci on (i.e., la toma de una decisi on).
T picamente el tama no de este grafo ser a inmenso, por lo que no existir a de manera expl cita. En cada momento s olo tenemos en una pila los nodos que van desde el estado inicial al estado actual. Si cada secuencia de decisiones distinta da lugar a un estado diferente, el grafo es un arbol (el arbol de estados).
Q Q Q Q Q Q Q Q
Tenemos un tablero de ajedrez de N N escaques, y queremos situar sobre el mismo a N reinas, de manera que ninguna pareja de las mismas se ataquen mutuamente. N otese que se trata de un problema altamente restringido:
1 2 3
Consideramos un enfoque incremental en el que colocamos una reina en cada paso: Debido a los ataques verticales, s olo puede haber una reina en cada columna, i.e., las decisiones se reducen a determinar la la en la que se pone la reina de cada columna. Debido a los ataques horizontales, s olo puede haber una reina en cada la, i.e., las soluciones son permutaciones de los n umeros [1 . . . N ]. Cada soluci on parcial R [1 . . . i ] indica la posici on de las reinas en las i primeras columnas.
C. Cotta
Backtracking
C. Cotta
Backtracking
Algoritmo de Resoluci on
N -Reinas proc NReinas (R [1 . . . i ]: TSoluci on, N : N, ok : B) variables j : N inicio si i =N entonces ok CIERTO en otro caso ok FALSO; j 1 mientras ok (j N ) hacer si EsFactible(R , j ) entonces R [i + 1] j ; NReinas (R , N , ok ) nsi j j +1 nmientras nsi n
C. Cotta Introducci on T ecnicas de Vuelta Atr as Extensiones Backtracking Conceptos Generales El Problema de las N -Reinas El Problema del Laberinto
Dada una soluci on parcial R [1 . . . i ], se examinan los posibles emplazamientos de la reina (i + 1)- esima.
1
Si hay alguna posici on en la que pueda situarse una reina m as sin atacar (diagonalmente) a las anteriores, la soluci on parcial es prometedora, y se exploran recursivamente las diferentes alternativas. Si no hay ninguna posici on libre de ataques para la siguiente reina, la soluci on parcial es un callej on sin salida, y hay que hacer retroceso.
Algoritmo de Resoluci on
N -Reinas func EsFactible (R [1 . . . i ]: TSoluci on, j : N): B variables factible : B inicio factible CIERTO k 1 mientras factible (k i ) hacer si (j =R [k ]) (i +1k = |j R [k ]|) entonces factible FALSO nsi k k +1 nmientras devolver factible n
C. Cotta Backtracking
Ejemplo
Q Q Q Q Q Q Q Q Q Q Q Q Q Q
C. Cotta Backtracking
Q Q Q
Soluci on al Problema
El camino puede representarse como una secuencia de movimientos. En cada casilla tenemos cuatro posibilidades a priori: Norte, Sur, Este, Oeste. Denimos un orden predeterminado para los movimientos (e.g., en el sentido del reloj empezando por el norte). En cada casilla se consideran estos movimientos en dicho orden. Si ninguno es posible, se retrocede. Dada la naturaleza del problema, es posible que se llegue de varias formas a la misma casilla (i.e., se pueden repetir estados). Para evitar ciclos, se deben marcar las casillas por las que se ya ha pasado, y considerarlas como bloqueadas.
Algoritmo de Resoluci on
Laberinto proc Laberinto (C [1 . . . r ]: TSol, L: TLab, i , j : N, ok : B) variables k : N; i ,j : Z inicio si L[i , j ]=salida entonces ok CIERTO en otro caso L[i , j ] bloqueada; ok FALSO; k 1 mientras ok (k NUMMOV ) hacer AplicaMovimiento(i , j , k , i , j ) si Bloqueada(L, i ,j ) entonces C [r + 1] k ; Laberinto (C , L, i , j , ok ) nsi k k +1 nmientras nsi C. Cotta Backtracking n
Ejemplo
C. Cotta
Backtracking
En los problemas anteriores el objetivo era encontrar una soluci on v alida, i.e., en el momento en el que se halla la b usqueda termina. Para adaptar este enfoque a problemas de enumeraci on es necesario continuar la b usqueda aunque se haya encontrado una soluci on. El arbol de b usqueda ha de recorrerse completamente, visitando todos los nodos prometedores.
Problemas de conteo o de enumeraci on: determinar cu antas soluciones de las caracter sticas deseadas existen, o encontrarlas todas. Problemas de optimizaci on: encontrar la soluci on factible que maximiza una cierta funci on de calidad.
C. Cotta Introducci on T ecnicas de Vuelta Atr as Extensiones Backtracking Backtracking para Enumeraci on Backtracking para Optimizaci on
Se determina el n umero c1 de decisiones posibles en el nodo inicial. Se elige una decisi on al azar, y se repite el procedimiento, obteni endose ci , 1 i L. Si ci se toma como el promedio de decisiones factibles en el nivel i - esimo, entonces el tama no T del arbol es
L i
T = 1 + c1 + c1 c2 + c1 c2 c3 + =
i =1 j =1
cj
C. Cotta
Backtracking
Ejemplo para N = 5
Q Q Q Q Q Q Q Q
Q Q Q Q Q Q
Q Q Q Q Q Q Q Q Q
Q Q Q Q Q Q Q Q
Q Q
Q Q Q Q Q
Q Q Q Q Q
Q Q Q Q Q
Complejidad de la B usqueda
1024 1021 1018 1015 1012 109 106 103 101 5 10 15 20 n umero de reinas
C. Cotta Backtracking
tama no del arbol n umero de soluciones En el caso de problemas de optimizaci on nos interesa encontrar la mejor de todas las soluciones factibles. El esquema de b usqueda es muy similar, ya que hay que explorar todas las soluciones v alidas posibles. Tenemos que arrastrar la mejor soluci on conocida en cada momento, para irla comparando con cada soluci on que se encuentre. 25
C. Cotta
Backtracking
Subset-Sum Problem Sea S una colecci on de n n umeros naturales s1 , , sn , y sea M un n umero natural. Encontrar un subconjunto S S tal que:
1 2
s S
M.
r R
r >M
Arbol de B usqueda
Sea S = {3, 5, 6, 7} y M = 15.
0
(1)
3
(2)
8
(3)
14
(4)
11
14
15
10
11
12
13
C. Cotta
Backtracking