7
FACULTAD DE INGENIERÍA E. A. P. INGENIERÍA DE SISTEMAS E INFORMÁTICA Backtracking y Recursividad DOCENTE : Ramírez Milla Luis. CURSO : Tópicos I INTEGRANTES: Zuleta Cortez Bill Junior Vásquez Muñoz Luis Alberto

Informe Backtracking

Embed Size (px)

Citation preview

Tpicos I

Tpicos I2014

FACULTAD DE INGENIERAE. A. P. INGENIERA DE SISTEMAS E INFORMTICA

Backtracking y Recursividad

DOCENTE:Ramrez Milla Luis. CURSO:Tpicos I INTEGRANTES:Zuleta Cortez Bill JuniorVsquez Muoz Luis Alberto

Junio del 2014

BACKTRACKINGLa tcnica de Backtracking es usada en muchos mbitos de la programacin, por ejemplo, para el clculo de expresiones regulares o para tareas de reconocimiento de texto y de sintaxis de lenguajes regulares. Tambin es usado incluso en la implementacin de algunos lenguajes de programacin, tales como Planner o Prolog y da soporte a muchos algoritmos en inteligencia artificial.

La tcnica Backtracking es un mtodo de bsqueda de soluciones exhaustiva sobre grafos dirigidos acclicos, el cual se acelera mediante poda de ramas poco prometedoras.

Esto es:

Se representan todas las posibilidades en un rbol. Se resuelve buscando la solucin por el rbol (de una determinada manera). Hay zonas que se evitan por no contener soluciones (poda). La solucin del problema se representa en una n-tupla (X1; X2; : : : ; Xn) (no llenando necesariamente todas las componentes) cada Xi se escoge de un conjunto de candidatos a cada n-tupla se le llama estado. Se trata de buscar estados solucin del problema.

Condiciones de parada

Cuando se consiga un estado solucin Cuando se consigan todos los estados solucin

Elementos de la Tcnica

Al disear un algoritmo backtraking debemos considerar los siguientes elementos:

Representacin de la solucin en una tupla (X1; : : : ; Xn)

Una funcin objetivo para determinar si la tupla a analizar es una solucin

Unas restricciones a los candidatos para rellenar la tupla: Implcitas del problema. Valores que puede tomar cada valor Xi Explcitas o externas al problema. Por ejemplo, problema mochila, el peso no debe superar la capacidad de la mochila

Una funcin de poda para eliminar partes del rbol de bsqueda Organizacin del problema en un rbol de bsqueda

El backtracking o vuelta atrs es una tcnica algortmica de resolucin general de problemas mediante una bsqueda sistemtica de soluciones. Se descompone la tarea a realizar en tareas parciales y se prueba sistemticamente cada una de estas, que a su vez se descompondrn en sub-tareas. Cuando al elegir una tarea se comprueba que no lleva a una solucin, se debe volver atrs, y probar con otra.

Ejemplo el de las N-Reinas:

Supongamos que tenemos un tablero de ajedrez.

Cmo podemos colocar 8 Reinas sin que se ataquen?

Recordemos que las reinas se mueven por el tablero

Cualquier nmero de casillas en horizontal Cualquier nmero de casillas en vertical Cualquier nmero de casillas en diagonal

Entonces no puede haber dos reinas

En la misma fila En la misma columna En la misma diagonal

Una solucin al problema:

Elementos de la tcnica backtracking:

Representacin del problema. En n-tuplas (x1; x2; : : : ; xn), donde xi es la fila donde est la reina de la columna i Restricciones implicitas. Las componentes xi Restricciones explicitas.No puede haber dos reinas en la misma fila, columna y diagonal rbol de estados. En el nivel i se obtiene la posicin de la reina i Funcin objetivo. La n-tupla est completa y cumple las restricciones. Funcin poda. Dada por las restricciones explicitas

Algoritmo N-Reinas

Funcin Poda

Funcin Objetivo

4