23
Vuelta Atrás (Back tracking) Integrantes: Mario Alonso Chan Dzul Cristian Javier Cauich Valle

Backtracking

Embed Size (px)

Citation preview

Vuelta Atrás (Back tracking)

Integrantes: Mario Alonso Chan Dzul Cristian Javier Cauich Valle

Introducción •  El método de vuelta atrás se

apl ica a problemas que requieren optimización.

•  Su forma básica se asemeja e n u n r e c o r r i d o d e profundidad de un árbol, en la que se denomina árbol de expansión.

•  Este árbol es conceptual, en donde cada nodo de nivel k representa una parte de la solución y esta formado por k-etapas.

Introducción  � Este método proporciona una manera sistemática

para generar todas las soluciones posibles.

� Para buscar las soluciones por etapas, pueden suceder 2 cosas: � La primera que tenga éxito si llega a una solución

(hoja del árbol). � La segunda que no tenga éxito en alguna etapa

(nodos fracasos).

Introducción � Si encontramos nodos fracasos el algoritmo vuelve

atrás (de ahí su nombre). � De lo contrario, el algoritmo continua explorando los

nodos que puedan conducir a la solución.

Resumiendo: La filosofía de este algoritmo no sigue algunas reglas

fijas en la búsqueda de las soluciones, se puede hablar de un proceso de prueba y error,

Introducción - Eficiencia  � La eficiencia de este método se basa en

considerar el menor numero de nodos que puedan llegar a ser soluciones, eliminando los n o d o s f r a c a s o s y c u i d a n d o l a s condiciones(restricciones) que comprobamos para detectarlos, así asegurar no eliminar una posible solución. Requiere

Tiempo Extra Ahorra mas

Tiempo.

Orden del algoritmo - Vuelta atrás

� Usualmente los algoritmos de vuelta tras son de complejidad exponencial por la forma en que se busca la solución mediante el recorrido de la profundidad del árbol, el orden de complejidad es al menos el numero de nodos del árbol que se generen, si no se utilizan restricciones es de orden (Z^n)

Introducción - Forma (Problema Vuelta atrás)  

� Cuando la solución se expresa como: n-tupla[x1,x2,....,Xn]

� Donde cada uno de los componentes Xi de este vector es elegido en cada etapa de entre un conjunto finito de valores, cada etapa representa un nivel en el árbol de expansión.

Restricciones � Para decidir en cada etapa cuales son los valores

que pueden tomar cada uno de los elementos Xi tendremos que tomar en cuenta las condiciones necesarias.

� Restricciones explicitas: Son formadas por reglas que restringen los valores que pueden tomar los valores Xi.

� Restricciones implícitas: Estas indican la relación que existen entre los posibles valores de Xi para que pueda formar parte de una N-tupla solución.

K-Prometedores VS Nodos Fracaso

� La N-tupla solución que vamos construyendo y q u e v e r i f i q u e n l a s r e s t r i c c i o n e s l o s denominaremos k-prometedores, de lo contrario cuando las condiciones no se cumplen en un determinado nodo k-prometedor se le denomina nodo fracaso.

Ejemplo 1: Las N-REINAS � Disponemos de un tablero de ajedrez de tamaño

8x8, y se trata de colocar en él, ocho reinas de manera que no se amenacen según las normas del ajedrez, es decir, que no se encuentren dos reinas ni en la misma fila, ni en la misma columna, ni en la misma diagonal.

8-tupla[x1,x2,x3,x4,x5,x6,x7,x8]

Xi - Columnas

Ejemplo 1: Las N-REINAS, Solución  

� Cualquier solución a este problema estará representada por:

Una 8-tupla [x1,x2,x3,x4,x5,x6,x7,x8] Cada Xi representa la columna donde la reina de

la fila i-esima es colocada. Una posible solución al problema es la tupla [4,6,8,2,7,1,3,5].

Ejemplo 1: Las N-REINAS  � Restricción explícita

�  Conjunto S = {1,2,3,4,5,6,7,8}. � Restricción implícita

� En primer lugar sabemos que dos reinas no pueden situarse en la misma columna (no puede haber dos Xi iguales).

� Dos reinas no pueden estar en la misma diagonal.

|x – x’| ≠ |y – y’|, siendo (x,y) y (x’,y’)

Ejemplo 1: Las N-REINAS  

Tablero 4x4  

Las N–REINAS ALGORITMO  

Cuando se desea encontrar todas las soluciones habrá que alterar ligeramente el esquema dado, de forma que una vez conseguida una solución se continúe buscando hasta agotar todas las posibilidades.

Ejemplo 2: El recorrido del REY de AJEDREZ  

� Dado un tablero de ajedrez de tamaño nxn, un rey es colocado en una casilla arbitraria de coordenadas (x,y). El problema consiste en determinar los (n^2)–1  movimientos de la figura de forma que todas las casillas del tablero sean visitadas una sola vez,

Ejemplo 2: El recorrido del REY de AJEDREZ  

� La solución al problema puede expresarse como una matriz de dimensión nxn que representa el tablero de ajedrez. Donde cada elemento (x,y)  de la matriz solución contendrá un número natural “k”  que indica el número de orden en que ha sido visitada la casilla de coordenadas (x,y).    

� El algoritmo trabaja por etapas diciendo en cada etapa K   hacia donde se mueve. Existen 8 movimientos posibles en cada etapa.

Restricciones    � Explícitas: Sabemos que la matriz solución

pueden ser números comprendidos naturales entre cero y n^2. ya que inicialmente la matriz estará relleno con “ceros”.

� Implícitas: delimitan el numero de hijos que se generan desde la casilla donde se encuentra mediante la comprobación que no lleven al rey fuera del tablero o a una casilla previamente visitada.

Matriz solución inicial Matriz solución k=1  (X0,Y0)  

Ejemplo 2: Algoritmo  Recorrido del rey (Vuelta atrás)  

Ejemplo 3: Los subconjuntos de la SUMA dada

� Sea W un conjunto de enteros no negativos y M un número entero positivo. El problema consiste en diseñar un algoritmo para encontrar todos los posibles subconjuntos de W cuya suma sea exactamente M.

Ejemplo 3: Los subconjuntos de la SUMA dada -Solución  � En primer lugar debemos suponer que el

conjunto viene dado por un vector de enteros no negativos y que se encuentra ordenado de forma creciente.

� Con esto la solución del problema podremos expresarla como una n-tupla X= [x1, x2, ..., xn] en donde Xi podrá tomar los valores (1,0) indicando que el entero i forma parte de la solución o no.

Ejemplo 3: Los subconjuntos de la SUMA dada - Ejemplo  �  Supongamos el conjunto W= {2,3,5,10,20}, M=15. �  Además llamaremos Vi al valor del i-ésimo elemento.

�  Restricciones �  En cualquier etapa k podemos considerar que una condición para

que pueda encontrarse solución cumpla que:

�  Como sabemos que los elementos están en orden no decreciente podemos

�  afirmar que:

�  En el algoritmo, llamaremos:

Ejemplo 3: Algoritmo  de la suma dada(Vuelta atrás)