IA I Técnica de diseño Backtracking I.

Slides:



Advertisements
Presentaciones similares
Búsqueda con retroceso
Advertisements

Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Backtracking 1. Método general. 2. Análisis de tiempos de ejecución.
Parte II. Algorítmica. 5. Backtracking. 1. Análisis de algoritmos.
Diseño y análisis de algoritmos
UNA INTRODUCCIÓN A PROGRAMAR Con pseudocódigo Created by P.Jones 2014.
Algoritmos para búsqueda “informada” Capítulo 4. Contenido Búsqueda primero el mejor Búsqueda primero el mejor “agresiva” (greedy) A * Heuristicas Algoritmos.
LOS OBJETIVOS EN UNA INVESTIGACIÓN CIENTÍFICA DGilC.
Introducción a la Programación Multimedial
IV. Métodos de Búsqueda Estudiaremos los métodos de búsqueda para resolver problema de la IA.
DE PRIMERO Y SEGUNDO GRADO Diseño: M. en C. Juan Adolfo Alvarez Mtz.
PARTE II: ALGORÍTMICA Tema 6. Backtracking.
Inventario de Fuentes de Datos Abiertos de México
Árboles binarios. Algoritmos básicos
ESTRUCTURAS CONDICIONALES
ROBERTO PINEDA FLORES. ALEXIS JULIAN VELAZQUEZ NAVA.
Olimpiadas Chilenas de Informática - Formación
Ciclos condicionales y exactos Estructura de control de ciclos
El conjunto de los números naturales
Unidad II. Probabilidad
Paul Leger Formas Normales Paul Leger
PROBLEMA DEL AGENTE VIAJERO
Unidad 5. Capítulo VI. Sistemas lineales no homogéneos.
Guía de Ejercicios 3: D&AA Universidad Viña del Mar 30/9/2002
Árboles Binarios * Recorridos * Tipo
Los sistemas de información
TAD’s ARBOLES GENERALIZADOS
Estructuras de Datos Recursividad.
MAESTRÍA EN CONTROL DE OPERACIONES Y GESTIÓN LOGÍSTICA
Tema 4 Árboles Prof. Oscar Adolfo Vallejos.
Problema de transporte método de vogel
Principales criterios empleados bajo Riesgo
REDES DE COMPUTADORAS SEGÚN TOPOLOGIA.
Introducción a la Programación
CAPÍTULO 9: DETECCIÓN DE LÍNEAS
CREAR DIAGRAMA DE FLUJO
2.2 Procedimientos recursivos
Algoritmo Conjunto ordenado y finito de pasos que permite hallar la solución de un problema. Una secuencia de pasos que conducen a la realización de una.
MODELO RELACIONAL.
Toribio Sarmiento Miguel Sesarego Cruz Rosmery
METODO DE TRANSPORTE APROXIMACION DE VOGEL
Unidad 4. Capítulo IX. Búsqueda de Yp: Variación de parámetros.
OMRI 2017 *inserta fecha aquí*
Diseñar y elaborar algoritmos
ÁRBOLES El árbol es una estructura de datos muy importante en informática y en ciencias de la computación. Los árboles son estructuras no lineales,
PROGRAMACIÓN 1 INTRODUCCIÓN
Búsqueda por profundidad iterativa
ESCUELA DE MERCADOTECNIA
Búsqueda tabú INTEGRANTES: JESSICA PINTA MICHELLE TORRES.
Manejo de restricciones especiales Las restricciones aparecen con frecuencia en problemas reales y pueden manejarse utilizando algoritmos de propósito.
Tipos de Datos abstractos
Metodología de la Programación
Árboles Binarios de Búsqueda (ABB)
Tipos de Datos abstractos
Expositores: María Gracia León Nelson Arol Ruiz
INTRODUCCION Hasta ahora solo hemos tenido que trabajar con algunas variables en cada uno de los programas que hemos realizado. Sin embargo, en más de.
Clase1: Análisis de Algoritmos, Optimización Clásica, Heurísticas
Estructuras de Datos Dinámicas
TEMAS *Arboles Binarios *listas Abiertas y Cerradas - Inserción - Recorrido - Eliminación *Pilas - Concepto - Inserción - Recorrido -
Introducción a la Estadística Informática
Optimización de Procesos.
MC Beatriz Beltrán Martínez Verano 2018
2/22/2019 SISTEMAS NO LINEALES.
MATRIZ DE CHEQUEO DE PARIDAD
Algoritmo de eliminacion gaussiana con pivoteo escalado de columna
Implementación de algoritmo para juegos. Algoritmo Minimax  El algoritmo de minimax en simples palabras consiste en la elección del mejor movimiento.
Espacio de estados: un problema se divide en un conjunto de pasos de resolución desde el inicio hasta el objetivo. Los estados y su relación de accesibilidad.
M.C. José Andrés Vázquez Flores
Transcripción de la presentación:

IA I Técnica de diseño Backtracking I

Temario Técnica de diseño Backtracking Introducción Aplicaciones Problema de las 8 reinas

Técnica de diseño Backtracking Introducción Problemas a considerar con esta técnica: Búsqueda de la mejor o del conjunto de todas las soluciones que satisfacen ciertas condiciones (restricciones) Cada solución es el resultado de un conjunto de decisiones Si se requiere la mejor solución, debe definirse la función objetivo a ser optimizada, en el caso de sólo requerir soluciones que satisfagan condiciones también debe definirse una función objetivo que debe ser satisfecha por cada selección. En algunos problemas de este tipo se conoce un criterio óptimo de selección en cada decisión:técnica greedy En otros problemas se cumple el principio de optimalidad de Bellman y se puede aplicar la técnica de programación dinámica. Existen otros problemas en los que no hay más remedio que buscar. Ejemplos: El problema de 8 reinas Coloreado de grafos Atravesar un laberinto Arboles de juego

Técnica de diseño Backtracking Introducción Planteamiento del problema Se trata de hallar todas las soluciones que satisfagan un predicado P La solución debe poder expresarce como una tupla donde cada pertenece a un conjunto Si entonces hay t n-tuplas candidatas para satisfacr P Método de fuerza bruta: generar todas las t n-tuplas y examinarlas seleccionando las que satisfacen P Backtracking o búsqueda con retroceso: formar cada tupla de manera progresiva, elemento a elemento, comprobando para cada elemento añadido a la tupla que pueda conducir a una tupla completa satisfactoria

Técnica de diseño Backtracking Introducción Planteamiento del problema Deben existir unas funciones objetivo parciales o predicados acotadores Estos predicados dicen si puede conducir a una solución La diferencia, entre el método de fuerza bruta y búsqueda con retroceso es: Si se comprueba que no puede conducir a ninguna solución , se evita formar y evaluar las tuplas que comienzan por Para saber si una n-tupla es solución, suele haber dos tipos de restricciones: Explícitas: describen si un de valores que puede tomar . Todas las tuplas que satisfacen estas restricciones definen un espacio de soluciones posibles. Implícitas: describen las relaciones que deben cumplirse entre los . Qué soluciones posibles satisfacen el predicado objetivo P

Técnica de diseño Backtracking Introducción Ejemplo: El problema de las 8 reinas El problema consiste en ubicar 8 reinas en un tablero de ajedrez , sin que se den jaque (dos reinas se dan jaque si comparten una fila, una columna o diagonal). Fuerza bruta = 4.426.165.368 Puesto que no puede haber más de una reina por fila, se puede replantear el problema como: “colocar una reina en cada fila del tablero de forma que no se den jaque”. Puesto el problema de esta forma, para ver si dos reinas se dan jaque, sólo hay que chequear si comparten una diagonal o columna. Por lo tanto , toda solución del problema puede representarse con una 8-tupla en la que es la columna en la que se coloca la reina que está en la fila i del tablero.

Técnica de diseño Backtracking Introducción Ejemplo: El problema de las 8 reinas Restricciones explícitas Esto implica que el espacio de soluciones consta de 8-tuplas (16.777.216 8-tuplas) Restricciones implícitas: no puede ghaber dos reinas en la misma columna, ni en la misma diagonal Por lo que todas las soluciones son parte de las permutaciones de la 8-tupla (1,2,3,4,5,6,7,8), por lo que elspacio se reduce a 8! 8-tuplas (40.320)

Técnica de diseño Backtracking Introducción Volviendo al planteamiento general Para facilitar la búsqueda, se adopta una organización en árbol del espacio de soluciones En el ejemplo, para el caso de las 4 reinas, en un tablero de 4x4, genera el siguiente árbol, donde el espacio de soluciones está definido por todos los caminos desde la raiz a cada hoja (hay 4! Hojas).

Técnica de diseño Backtracking Introducción Esquema algorítmico general Sea un camino desde la raiz hasta un nodo del árbol de espacio de estados. Sea el conjunto de los valores posibles de tales que es un camino hasta el nodo de un árbol. Suponiendo que exista algún predicado acotador A tal que es falso si el camino no puede extenderese para alcanzar un nuevo nodo respuesta , por ende una solución. Por lo tanto , los candidatos para son los valores de G tales que satisfacen A. Suponer finalmente , que existe un predicado R que determina si un camino termina en un nodo respuesta, es decir es ya una solución.

Técnica de diseño Backtracking Introducción Algoritmo genérico Procedimiento backtracking(k:entero, ent sal solucion: arreglo [1..n] de elmento) Variable nodo:elemento Inicio Para todo nodo en G(solucion,1,k-1) Solucion[k]:=nodo Si A(solución,1,k) entonces Si R(solución,1,k) entonces guardar (solución,1,k) Fin-si backtracking (k+1,solucion) Fin-para FIN.

Técnica de diseño Backtracking Introducción En el ejemplo de las 4 reinas

Técnica de diseño Backtracking Introducción De nuevo, en general Notar que el árbol no se construye explícitamente., sino que implícitamente, mediante las llamadas recursivas del algoritmo de búsqueda. El algoritmo no hace llamadas recursivas cuando: k = n +1, o cuando ningún nodo generado por G satisface A. Backtracking = búsqueda primero en profundidad y con predicados acotadores. El algoritmo anterior halla todas las soluciones y además estas pueden ser de longitud variable. Variantes Limitar el número de soluciones a una sola, añadiendo un parámetro boolano de salida que indique si se ha encontrado una solución. Forzar a que sólo los nodos hoja puedan significar solución (realizando la recursión sólo si no se ha encontrado un nodo solución): si R(solucion,1,k) entonces guardar (solucion,1,k) sino backtracking( k+1,solucion) fin-si

Técnica de diseño Backtracking Introducción Variantes Resolver problemas de optimización: además de la solución actual en construcción hay que almacenar la mejor solución encontrada hasta el momento. Se mejora la eficiencia de la búsqueda si los predicados acotadores permiten eliminar los nodos, de los que se sabe, no pueden llevar a una solución mejor que la ahora disponible. (poda, métodos de ramificación y acotamiento) Eficiencia Depende de: El tiempo necesario para generar un elemento solucion[k] El número de elementos solución que satisfacen las restricciones explícitas G El tiempo de ejecución de los predicados acotadores A, y El número de elementos solución[k] que satisfacen los predicados A

Técnica de diseño Backtracking Introducción Eficiencia Mejoras Si se consigue que los predicados acotadores reduzcan mucho el número de nodos generados. Existe un compromiso pues un predicado acotador fuerte precisa de más tiempo de evaluación. En el mejor caso, si se reduce a un solo nodo generado, el tiempo es nodos a generar en total. En peor caso o con p(n) un polinomio Si es posible, reordenar las selecciones de forma que Así cbe esperar que se explorarán menos caminos.

Técnica de diseño Backtracking Introducción Estimación a priori del número de nodos generados Idea: generar un camino aleatorio en el árbol de espacio de estados. Sea el nodo del camino aleatorio en el nivel i y sea el número de hijos de que satisfacen el predicado acotador A. El siguiente nodo del camino aleatorio se consigue aleatoriamente de esos hijos La generación termina en un nodo de respuesta (solución) o en un nodo por el que no se puede seguir. (ninguno de sus hijos satisfacen los predicados acotadores) Si los predicados acotadores son estáticos (no cambian en toda la búsqueda; esto no es lo habitual; lo habitual es que se hagan cada vez más restrictivos) y más aún si los nodos de un mismo nivel tienen todos igual grado, entonces El número estimado de nodos que se generará con el algoritmo de búsqueda con retroceso es:

Técnica de diseño Backtracking Introducción Función de estimación función estimacion():entero Variable nodo:elemento sol:arreglo [1..n] de elemento k,m,r,card:entero; Inicio k:=1;m:=0;r:=1; repetir card:=0; para todo nodo en G(sol,1,k-1) hacer Sol[k]:=nodo Si A(sol,1,k) entonces card:=card+1 Fin-si Fin-para si card <> 0 entonces r:=r*card m:=m+r sol[k]:=elecAleat(G(sol,1,k-1)) k:=k+1 hasta que R(sol,1,k-1) OR (card=0) devuelve m FIN.

Técnica de diseño Backtracking El problema de las ocho reinas Considerar el problema más general de colocar n reinas en un tablero de nxn , sin que se den jaque Cada solución se representa por una n-tupla , en la que es la columna de la i-ésima fila, en la que se coloca la i-ésima reina. El espacio de búsqueda se reduce a n! elementos, teniendo en cuenta que todas ellas han de ser permutaciones de (1,2,...n), es decir todas las han de ser distintas Además no deben compartir la diagonal. Representación de la información Debe permitir interpretar fácilmente la solución: x:arreglo [1..n] de entero {x[i]=columna i-ésima de la reina en la i ésima fila} Evaluación del predicado acotador: Se utilizará una función auxiliar buenSitio, que devuelve verdadero si la k-ésima se puede colocar en la columna x[k], es decir, si está en distinta columna y diagonales que las k-1 reinas anteriores Dos reinas están en la misma diagonal si tienen el mismo valor de fila+columna

Técnica de diseño Backtracking El problema de las ocho reinas Evaluación del predicado acotador: Dos reinas están en la misma diagonal si tienen el mismo valor de fila-columna. Por lo que se debe satisfacer:

Técnica de diseño Backtracking El problema de las ocho reinas Función que revisa las restricciones funcion buenSitio(k:entero, ent x: arreglo [1..n] de entero):booleano {devuelve verdad si y solo si se puede colocar una reina en la fila k y la columna x[k], Habiendo sido colocadas ya las k-1 reinas anteriores} Variable i:entero;amenaza:booleano Inicio i:=1;amenaza:=falso mientras i<k and not amenaza haga Si x[i]=x[k] or abs(x[i]-x[k])=i-k entonces amenaza:=verdad sino i:=i+1 Fin-si Fin-mientras devuelve not amenaza FIN.

Técnica de diseño Backtracking El problema de las ocho reinas Solución recursiva Procedimiento colocarReinas(ent k:entero, ent sal sol: arreglo [1..n] de entero) {sol[1..k-1] están bien colocadas} Variable i:entero Inicio Para i:=1 hasta n hacer sol[k]:=i Si buenSitio(k,sol) entonces Si k=n entonces escribir (sol) sino colocarReinas(k+1,sol) Fin-si Fin-para FIN. Llamado ... colocarReinas(1,sol)

Técnica de diseño Backtracking El problema de las ocho reinas Solución iterativa Procedimiento nReinas(ent n:entero) Variable k:entero, x: arreglo [1..n] de entero Inicio k:=1;x[1]:=0; mientras que k> 0 hacer {maneja retrocesos} x[k]:= x[k]+1 mientras que x[k]<=n and not buenSitio Fin-mientras Si x[k]<=n entonces {se ha encontrado un buen sitio} Si k=n entonces {es una solución completa?} escribir (x) sino k:=k+1 x[k]:=0 {ir a la siguiente fila} Fin-si k:=k+1 {retroceso} Fin-para FIN.

Técnica de diseño Backtracking El problema de las ocho reinas Estimación del costo computacional Se realizaron cinco evaluaciones de la función estimación con un resultado promedio de 1625 Para n=8, el número total de nodos del espacio de estados es Por lo que únicamente se recorrería un 2.34% del número total de nodos (si la estimación es acertada) En este caso la estimación es algo optimista pues se puede comprobar que el número de nodos explorados es de 2057 y por lo tanto se recorre un 2,97% Número de soluciones para n=8 : 92 Par n mayores la mejora se hace más considerable. para n=12 Número de permutaciones 12!=479.001.345 Número total del espacio de estados : 1.302.061.345 Número total de nodos explorados:856.189 que es un 0,065% Se obtiene la primera solución a partir de visitar 262 nodos