Diseño y análisis de algoritmos

Slides:



Advertisements
Presentaciones similares
INGENIERIA INFORMATICA Y BUSQUEDAS CON ADVERSARIOS
Advertisements

Branch-and-bound Search
INTELIGENCIA ARTIFICIAL
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Inteligencia Artificial
GRAFOS Presentado por: Oscar Leonardo Ramírez John Freddy Sandoval
Búsqueda con retroceso
Investigación de Operaciones
TÉCNICA DE DISEÑO BACKTRACKING
Introducción a los Algoritmos
Grupo 4 Matías Melgar Pablo Carbonell
Sistemas de Razonamiento Lógico
KRIGING.
Preguntas tipo test (I)
Algoritmos Aleatorizados
PARADIGMA Es un esquema de pensamiento que nos lleva a concebir las cosas de una manera determinada. el término paradigma puede indicar el concepto de esquema.
Solución de problemas por búsqueda inteligente
Inteligencia Artificial Resolver problemas mediante búsqueda
Tema Nº4.
Inteligencia Artificial Resolver problemas mediante búsqueda
2- SIMPLEX.
Programación Lineal Entera Antonio H. Escobar Z Universidad Tecnológica de Pereira – Colombia Posgrado en Ingeniería – Maestría/Doctorado.
Programación de Computadores
Clase 2, Parte 2: Métodos Tradicionales de Optimización y Búesqueda
Temas importantes para el desarrollo de la segunda parte del TPE
Trabajo presentado por: LUIS FERNANDO OBANDO ING
Capítulo 4 BUSQUEDA INFORMADA.
EL PODER DE SOLVER.
Optimización, Búsqueda Heurística
Agentes de resoluciones d problemas Parte I. Un agente puede adoptar una meta o un propósito para satisfacer.
Introducción al análisis de algoritmos
Estructura de Datos y Algoritmos
Diseño y análisis de algoritmos
Programación dinámica: Introducción
Programación Lineal Entera Antonio H. Escobar Z Universidad Tecnológica de Pereira – Colombia Posgrado en Ingeniería – Maestría/Doctorado.
Diseño y análisis de algoritmos
Métodos de Búsqueda Informada. Búsqueda de la mejor Ruta En esta sección no sólo nos interesa encontrar una posible ruta, sino obtener aquella ruta que.
Complejidad de los problemas de decisión
Parte I. Estructuras de Datos.
A LGORITMO DE BÚSQUEDA POR COSTO UNIFORME Dorian López.
Diseño y análisis de algoritmos
Parte II. Algorítmica. 3. Algoritmos voraces.
Ramificación y acotación (Branch and Bound)
Material de apoyo Unidad 4 Estructura de datos
Algoritmos de Búsqueda “Backtracking y Branch and Bound”
Backtracking 1. Método general. 2. Análisis de tiempos de ejecución.
Agustín J. González ELO320: Estructura de Datos y Algoritmos
Parte II. Algorítmica. 5. Backtracking. 1. Análisis de algoritmos.
Diseño y análisis de algoritmos
Parte I. Estructuras de Datos.
Problema de inclusión en una Curva Digital Por Orellana Muñoz, Alfonso Paz Vicente, Rafael Pérez Medina, Gerardo Rodríguez Naranjo.
Estructura de Datos M.C. José Andrés Vázquez Flores FCC/BUAP
PROBLEMAS DE SATISFACCIÓN DE RESTRICCIONES
Tema 12. Backtracking. 1. Método general.
Parte I. Estructuras de Datos.
Tema 10: Algoritmos voraces
Tema 13: Ramificación y poda
Agustín J. González ELO320: Estructura de Datos y Algoritmos
ALGORITMO QUE ES ??.
Sistemas Basados en Reglas
DISEÑAR Y ELABORAR ALGORITMOS Nombre: anayeli hernandez peralta Grado y grupo: 1 “3” Materia: Informática y computación Maestro: Ángel Buendía Turno: Vespertino.
DISEÑAR Y ELABORAR ALGORITMOS NOMBRE: LAURA PAEZ GARCIA GRADO Y GRUPO: 1 “3” MATERIA: INFORMÁTICA Y COMPUTACIÓN MAESTRO: ÁNGEL BUENDÍA TURNO: VESPERTINO.
Taller: Inteligencia Computacional
Desarrollo de lógica algorítmica.
* Cuando nos permite desarrollar un programa que necesitamos para tomar un conjunto de buenas prácticas para hacer eso. Esto se debe a que podemos ahorrar.

LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
IA I Técnica de diseño Backtracking I.
Transcripción de la presentación:

Diseño y análisis de algoritmos 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