Top Banner
Vuelta Atrás (Back tracking) Integrantes: Mario Alonso Chan Dzul Cristian Javier Cauich Valle
23
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Backtracking

Vuelta Atrás (Back tracking)

Integrantes: Mario Alonso Chan Dzul Cristian Javier Cauich Valle

Page 2: Backtracking

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.

Page 3: Backtracking

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).

Page 4: Backtracking

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,

Page 5: Backtracking

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.

Page 6: Backtracking

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)

Page 7: Backtracking

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.

Page 8: Backtracking

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.

Page 9: Backtracking

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.

Page 10: Backtracking

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

Page 11: Backtracking

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].

Page 12: Backtracking

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’)

Page 13: Backtracking

Ejemplo 1: Las N-REINAS  

Tablero 4x4  

Page 14: Backtracking

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.

Page 15: Backtracking

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,

Page 16: Backtracking

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.

Page 17: Backtracking

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.

Page 18: Backtracking

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

Page 19: Backtracking

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

Page 20: Backtracking

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.

Page 21: Backtracking

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.

Page 22: Backtracking

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:

Page 23: Backtracking

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