Sunteți pe pagina 1din 19

Backtracking

Bsqueda con retroceso


(Backtracking)
Introduccin.
Es una tcnica general que consiste en recorrer
sistemticamente todos los posibles caminos.
Cuando un camino no conduce a la solucin, se
retrocede al paso anterior para buscar otro
camino.
Si existe solucin es seguro que se encuentra, el
problema viene a ser el tiempo de proceso.
Es una tcnica netamente recursiva.

Introduccin
En su forma bsica

Se asemeja a un recorrido en profundidad dentro de


un rbol cuya existencia slo es implcita, y que se
denomina rbol de Expansin.
El rbol es netamente conceptual, por lo tanto:

i.Se hace uso de su organizacin como tal, en


donde cada nodo de nivel k representa una parte
de la solucin y est formado por k etapas que se
suponen ya realizadas.
ii.Sus hijos son las prolongaciones posibles al aadir
una nueva etapa.

Introduccin
Caractersticas.
El algoritmo de Backtracking (vuelta atrs)
hace un recorrido en profundidad en un rbol.
El rbol se construye en memoria por eso se dice
que es implcito.
El recorrido en profundidad regresa sobre sus
pasos (retrocede) cada vez que encuentra un
camino por el que no debe o no puede continuar.

Introduccin
Dimensiones.
La altura.
Hay k posibles decisiones que se deben
tomar para llegar a una solucin.
La Anchura.
Cada decisin se debe tomar de un
conjunto de alternativas distintas (dominio).

Introduccin. Dimensiones
Anchura. Nmero de alternativas
(candidatos)

Altura. La
cantidad de
decisiones
que se
deben
tomar

Mtodo General
Un problema puede ser resuelto con un
algoritmo Backtracking, (vuelta atrs),
cuando la solucin puede ser expresada
como una n-tupla [x1, x2, ..., xn] donde
cada una de las componentes xi de este
vector, es elegida en cada etapa de entre
un conjunto finito de valores
Cada etapa representar un nivel en el rbol
de expansin.
Se debe determinar el nmero de la
descomposicin en etapas a realizar y
definir, dependiendo del problema, la n-tupla
que representa la solucin del problema y el

Ejemplo 1
Se tiene n Objetos, cada uno puede o no ser
seleccionado Cules son todas las formas
posibles de tomarlos? De cuntas maneras
se pueden escoger?

Ejemplo 1
Primero pensar como ser el rbol.
En cada nivel se puede decidir si se elige o no el
artculo.
La cantidad de decisiones que se debe tomar
depende de la cantidad de artculos.
Dicha cantidad de decisiones es la profundidad
del rbol.

Por ejemplo, el camino 1011 significa que se


tomaron el primer, tercer y cuarto artculo y no se
tom el segundo

Ejemplo
Note que al tener una complejidad
exponencial, el backtraking no es una tcnica
muy efectiva, pero su ventaja es que siempre
encontrar la solucin si es que existe.
En este caso, el anlisis de complejidad
permite dar una idea de que tan rpido se puede
obtener la solucin, o si es factible encontrarla,
en caso de no serlo se debe utilizar otras
tcnicas.
Existen tcnicas para podar el rbol, tales
como poda alfa, algoritmo A*, o algn otro tipo.

Esquema General

Dado que en todo algoritmo backtraking hay que recorrer


un rbol y en cada paso se necesita encontrar todas las
alternativas posibles y luego recorrer una a una:
1.- Si se lleg a la mxima profundidad del rbol,
entonces mostrar solucin (caso base)
2.-Si no entonces
2.1 Construir cada candidato
2.2 Para cada candidato aadirlo a la solucin
y llamar
recursivamente a la funcin con el nivel
siguiente de profundidad
Lo que cambia en cada problema es:
-La forma de generar cada candidato.
- Los tipos de datos.
- El nmero de parmetros de las funciones
- Aadir condiciones adicionales propias al
problema

Ejemplo 2.
Nmero que suman un valor objetivo.
Dado un conjunto de nmeros enteros {2, 3,
6, 1, 5}, encontrar los subconjuntos cuya suma
sea exactamente 9. Por ejemplo: {3, 1 , 5}
suman 9.
Hay que pensar como va hacer el rbol si se
tiene los elementos {2, 3, 6, 1, 5}, entonces se
tendr 5 niveles y en cada nivel se debe decidir si
tomar o no el elemento.

Cdigo

El Problema de las N Reinas.

El Problema de las N Reinas.

El Problema de las N Reinas.

El Problema de las N Reinas.