Está en la página 1de 5

ESTRUCTURA

ALUMNA: Cindy Rosselin


lvarez Casco 31021576
INGENIERO: Josu Bladimir
Jimnez

ESTRUCTURA

Los algoritmos de backtracking


Los algoritmos de vuelta atrs o retroceso (backtracking en ingls) se basan en recorrer el espacio completo de las
soluciones posibles al problema planteado. Esta tcnica es la aplicacin directa del mtodo de bsqueda conocido
como primero en profundidad. Tpicamente, los algoritmos de vuelta atrs no realizan ningn tipo de optimizacin
y recorren el rbol de soluciones completo. Sin embargo, es posible aplicarles una poda para no descender en
aquellas ramas que, de antemano, se sabe que no conducen a una solucin. Una mejora de los algoritmos de vuelta
atrs son los algoritmos de Ramificacin y Poda.
Si bien este tipo de algoritmos son por lo general ineficientes, en ocasiones es el nico camino posible. Adems,
pueden considerarse otros mtodos algortmicos, como los algoritmos voraces o la programacin dinmica, como
optimizaciones de este mtodo.
El algoritmo bsico de vuelta atrs es el siguiente:
1. Tomar una opcin de entre las posibles
2. Para cada eleccin, considerar toda opcin posible recursivamente
3. Devolver la mejor solucin encontrada

ESTRUCTURA
Esta metodologa es lo suficientemente genrica como para ser aplicada en la mayora de problemas. Por el
contrario, incluso teniendo cuidado en la implementacin, es muy probable que un algoritmo de vuelta atrs sea de
tiempo exponencial y no polinmico. Adems, el anlisis de estos algoritmos puede resultar bastante complejo.
Por qu se llaman algoritmos de vuelta atrs?. Porque en el caso de no encontrar una solucin en una subtarea se
retrocede a la subtarea original y se prueba otra cosa distinta (una nueva subtarea distinta a las probadas
anteriormente).
Puesto que a veces nos interesa conocer mltiples soluciones de un problema, estos algoritmos se pueden modificar
fcilmente para obtener una nica solucin (si existe) o todas las soluciones posibles (si existe ms de una) al
problema dado.
Los algoritmos de vuelta atrs tienen un esquema genrico, segn se busque una o todas las soluciones, y puede
adaptarse fcilmente segn las necesidades de cada problema. A continuacin se exponen estos esquemas, extrados
de Wirth. Los bloques se agrupan con begin y end, equivalentes a los corchetes de C, adems estn tabulados.
- esquema para una solucin:
procedimiento ensayar (paso : TipoPaso)
repetir
| seleccionar_candidato
| if aceptable then
| begin
anotar_candidato

ESTRUCTURA
| if solucion_incompleta then
| begin
| ensayar(paso_siguiente)
| if no acertado then borrar_candidato
| end
| else begin
| anotar_solucion
| acertado <- cierto;
| end hasta que (acertado = cierto) o (candidatos_agotados) fin procedimiento
- esquema para todas las soluciones:
procedimiento ensayar (paso : TipoPaso) para cada candidato hacer
| seleccionar candidato
| if aceptable then
| begin
| anotar_candidato
| if solucion_incompleta then

| ensayar(paso_siguiente)
| else
| almacenar_solucion

ESTRUCTURA
| borrar_candidato
| end hasta que candidatos_agotados
fin procedimiento
Por ltimo, se exponen una serie de problemas tpicos que se pueden resolver fcilmente con las tcnicas de vuelta
atrs. El primero que se expone es muy conocido. Se trata de la vuelta del caballo. Muchos problemas de los
pasatiempos de los peridicos pueden resolverse con la ayuda de un ordenador y en esta web se muestran algunos
de ellos.

También podría gustarte