M.C. Juan Carlos Olivares Rojas

Slides:



Advertisements
Presentaciones similares
INGENIERIA INFORMATICA Y BUSQUEDAS CON ADVERSARIOS
Advertisements

Búsqueda en árboles de juego
Inteligencia Artificial
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Inteligencia Artificial
Inteligenica Artificial I Alejandro Permingeat Inteligencia Artificial de Russell y Norving 1° edición 1996 Parte II Capítulo V.
BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA
NUMERO DE CONTROL: NOMBRE DEL TRABAJO: MAPA CONCEPTUAL
Grupo 4 Matías Melgar Pablo Carbonell
Profesor: Joel Pérez González
Instituto Tecnológico De Villahermosa
Investigación de Operaciones II
ESTRUCTURAS DE DATOS AVANZADAS
PROGRAMACION DE ESTRUCTURAS DE DATOS
Representación en espacio de estado
Inteligencia Artificial Búsqueda entre adversarios
Solución de problemas por búsqueda inteligente
Inteligencia Artificial Resolver problemas mediante búsqueda
Almacenamiento y Recuperacion de Información TAD_ABB Ana Lilia Laureano Cruces Universidad Autónoma Metroplotiana.
Inteligencia Artificial Resolver problemas mediante búsqueda
Inteligencia Artificial M.C. Juan Carlos Olivares Rojas.
AED I. Estructuras de Datos.
GRAFOS HUGO ARAYA CARRASCO.
1 Algoritmos Elementales de Grafos Agustín J. González ELO-320: Estructura de Datos Y Algoritmos 1er.Sem
Estructura de Datos Lineales
Grafos. Un Grafo G es un par de conjuntos (V, E), donde V es un conjunto no vacío de elementos llamados vértices o nodos y E es un conjunto formado por.
Teoria de grafos.-clase 4
Trabajo presentado por: LUIS FERNANDO OBANDO ING
Capítulo 4 BUSQUEDA INFORMADA.
Universidad de los Andes-CODENSA
Árbol recubridor mínimo Distancias
I n s t i t u t o T e c n o l ó g i c o d e T e c n o l ó g i c o d e V i l l a h e r m o s a ING. EN SISTEMAS CATEDRATICO: I.I. Zinath Javier Gerónimo.
Solución de problemas por Búsqueda
Optimización, Búsqueda Heurística
Single-Source Shortest Paths “Camino más corto desde/hacia una fuente”
Problemas de Decisión y Optimización
Matemáticas Discretas
Agentes de resoluciones d problemas Parte I. Un agente puede adoptar una meta o un propósito para satisfacer.
Estructura de Datos y Algoritmos
Diseño y análisis de algoritmos
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.
A LGORITMO DE BÚSQUEDA POR COSTO UNIFORME Dorian López.
Diseño y análisis de algoritmos
(Organización y Manejo de Archivos)
Descomposición Factorial Unidad 5
Parte II. Algorítmica. 3. Algoritmos voraces.
PROGRAMACIÓN DE RECURSOS.
Surge cuando se necesita un modelo costo-efectividad que permita transportar ciertos bienes desde un lugar de origen a un destino que necesita aquellos.
INSTITUTO TECNOLÓGICO DE VILLAHERMOSA. CATEDRATICO:
Backtracking 1. Método general. 2. Análisis de tiempos de ejecución.
Parte II. Algorítmica. 5. Backtracking. 1. 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.
Análisis y Diseño de Algoritmos
Inteligencia Artificial Búsqueda entre adversarios Primavera 2008 profesor: Luigi Ceccaroni.
Parte I. Estructuras de Datos.
INTRODUCCIÓN A JUEGOS (BÚSQUEDA CON ADVERSARIOS)
Toribio Sarmiento Miguel Sesarego Cruz Rosmery. Desde la aparición de las civilizaciones, los juegos han ocupado la atención de las facultades intelectuales.
DIAGRAMA DE FLECHAS O RUTA CRITICA
Instituto Tecnológico De Villahermosa Alumno: Lázaro García Hernández.
ALUMNO: GABRIEL GARCÍA VELAZQUEZ NO.CONTROL: MATERIA: INV. OPERACIONES UNIDAD 3.
UNIDAD 2 Grafos Árboles abarcadores mínimos Caminos más cortos.
Elaboración de algoritmos usando lógica de programación
BUSQUEDA EN ANCHURA Y PROFUNDIDAD
Inteligencia Artificial
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
Matemáticas Discretas MISTI
Planificación de CPU Conceptos Básicos Criterios de Planificación Algoritmos de Planificación Planificación con Múltiples Procesadores Planificación Real-Time.
Transcripción de la presentación:

M.C. Juan Carlos Olivares Rojas Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares http://antares.itmorelia.edu.mx/~jcolivar Febrero, 2010

Outline Métodos Ciegos Búsqueda Heurística La mejor trayectoria Trayectorias Redundantes Árboles y Búsqueda con Adversarios Métodos Algorítmicos Árboles y Búsqueda con Adversarios Métodos Heurísticos

Métodos Ciegos Las redes son grafos dirigidos, simples con pesos donde se tienen dos nodos especiales: un origen y un destino sin entradas y salidas respectivamente. Las redes se utilizan en muchos problemas de computación, desafortunadamente para muchos problemas, el espacio de soluciones es grandísimo por lo que la búsqueda se volvería muy extensa.

Métodos Ciegos De esta forma, se necesitan de mejores mecanismos de búsqueda. En muchas ocasiones el espacio de búsqueda se puede reducir simplemente con observar simetrías, ignorar detalles y encontrar las abstracciones apropiadas. Un ejemplo muy representativo de este problema es el espacio de soluciones que se obtiene en el juego puzzle de las ocho piezas. Se requieren de 9! = 362,880 nodos para representar las posibles opciones.

Métodos Ciegos El primer método de búsqueda optimizada es el de búsqueda primero en anchura. La idea de este método es buscar primero en todos los nodos de un mismo nivel sin tener que recurrir por todos los niveles del grafo. Para ello se necesita definir una función de estados sucesores que indique los nodos que se producirán al aplicar todos los operadores a dicho nodo.

Métodos Ciegos Existen otras variantes de este método como la búsqueda de coste uniforme, la cual visita los nodos de acuerdo a sus pesos. El algoritmo BFS (Breadth First Search) es el siguiente: Sea G = (V, A) un grafo conexo, V’ = un conjunto de vértice V, A’ un vector de arcos inicialmente vacío y P un vector auxiliar inicialmente vacío:

Búsqueda en Anchura Se introduce el vértice inicial en P y se elimina del conjunto. Mientras V’ no sea vacío repetir los puntos 3 y 4. En otro caso parar. Se toma el primer elemento de P como vértice activo.

Búsqueda en Anchura Si el vértice activo tiene algún vértice adyacente que se encuentre en V’: Se toma el de menor índice. Se inserta en P como último elemento. Se elimina de V’. Se inserta en A’ el arco que le une con el vértice activo. Si el vértice activo no tiene adyacentes se elimina de P.

Búsqueda en Profundidad También se le conoce como vuelta atrás. Consume menos memoria que el método en anchura pero en algunas ocasiones puede ser contraproducente por lo que se llega a limitar su profundidad. Los ejemplos más utilizados en búsqueda de profundidad son los algoritmos de preorden, enorden, postorden. Los cuales trabajan sólo con arboles binarios.

Búsqueda Heurística Heurística viene del griego heuriskein, que significa descubrir. De la misma palabra se deriva la exclamación: ¡Eureka!

Reflexión Investigar que problemas de los visto en clases pueden resolver a través de Búsqueda en Anchura y en Profundidad. Investigar que otro tipo de problemas pueden ser resueltos utilizando búsquedas en anchura y en profundidad.

Backtracking Este algoritmo consiste en un recorrido en profundidad o anchura analizando sus posibles estados futuros y regresando al estado previo si no fue posible una solución satisfactoria. El problema de las n reinas se soluciona de esta forma al igual que otros problemas

Problema del Caballo En un tablero de n*n (donde n>2) encontrar todos los movimientos de un caballo que sin repetir ninguna casilla llenen cada una de las casillas del tablero.

Problema del Caballo Recordar que los caballos se mueven en forma de L una posición en un sentido (vertical/horizontal) y dos en el otro sentido (horizontal/vertical). Por ejemplo si se mueve una posición al frente, se tendrá que mover la pieza dos posiciones a la izquierda o a la derecha. Tarea: programar el problema del Caballo. Se parte por heurística de una posición X de la matriz.

Problema del Caballo La matriz está inicializada con 0s. Se coloca un 1 en la primera posición. Se escoge una nueva solución que no esté ocupada colocando el siguiente número (secuencia del viaje). Si todas las celdas están ocupadas se debe regresar a la solución anterior y tratar con un nuevo camino. Se necesita ir guardando las celdas ya visitadas en un nivel

Problema del Caballo El algoritmo termina cuando o se llenan todas las celdas o cuando se tiene la “mejor” solución (más celdas llenas). Se recomienda utilizar búsqueda por anchura calculando previamente el espacio de solución de cada nivel. El usuario deberá dar el tamaño de la matriz y la posición inicial del caballo y el programa deberá mostrar la matriz con los movimientos del caballo.

Búsqueda Heurística Heurística viene del griego heuriskein, que significa descubrir. De la misma palabra se deriva la exclamación: ¡Eureka! El algoritmo más conocido de este tipo es el A* que basa su funcionamiento en obtener dos distancias del origen a la raíz y de la raíz al nodo objetivo. f(n) = g(n) + h(n)

La mejor trayectoria Es otro algoritmo heurístico que trata de encontrar la mejor trayectoria depende de lo que se trate. Ejemplo de este tipo de algoritmos se encuentra la ruta crítica, la ruta más corta, el canal con más ancho de banda, etc. A los algoritmos heurísticos reciben el nombre de búsqueda informada, mientras que los ciegos son búsquedas no informadas.

La mejor trayectoria Las heurísticas no son otra cosa que estrategias de búsquedas informada. Desafortunadamente las heurísticas no lo miden todo, simplemente pretende encontrar una solución lo mejor posible al problema. Un método heurístico más avanzado lo comprenden los algoritmos genéticos.

Trayectorias Redundantes Son algoritmos que pretenden eliminar todos aquellos espacios que no son soluciones viables dado que consume mucho tiempo. Los algoritmos de planificación son un ejemplo de este tipo de herramientas. Se debe cuidar de no repetir estados. Una posible solución es ver la simetría de los árboles.

La Mejor Trayectoria Son dependientes a los máximos y mínimos locales. En la naturaleza nos basamos mucho en como trabajan los organismos como las abejas y en fenómenos físicos como el recocido simulado.

Problema del Cajero Automático Los cajeros automáticos (ATM por sus siglas en inglés) son dispositivos embebidos cuya función consiste en despachar a clientes proporcionando dinero en efectivo. Cuentan con recursos finitos en este caso billetes de distintas nominaciones $1000, 500, 200, 10 y 50 en distintas cantidades. Al solicitar una cantidad el cajero debe “ingeniarselas” para dar la mejor combinación de dinero.

Problema del Cajero Automático Se debe brindar de una buena combinación ya que sino se pueden acabar los billetes de cierta denominación pudiendo dejar sin operaciones a muchos clientes. Una heurística balanceada muy simple pero poco eficiente consiste en repartir dinero de una denominación hasta tratar de completar la suma (por ejemplo dar billetes muy altos –puede ser bajos pero no es tan eficiente- y después completarlos con los de siguiente denominación).

Problema del Cajero Automático Esta solución da como resultado que primero se acaben todos los billetes de una denominación. Una solución simple y más eficiente es repartir dinero en forma balanceada, empezando por billetes de altas denominaciones hasta bajas. Este esquema es más justo ya que va quitando billetes por igual, desgraciadamente esta es su deficiencia ya que un billete de 50 tendría un peso igual a uno de 500.

Problema del Cajero Automático Una mejor solución consiste en ponerle ponderación a cada recurso (billete) de acuerdo a su valor monetario y a la cantidad de recurso disponible, por lo que se ocuparía una función de similaridad que quizás tenga que ser dinámica y quizás no muy sencilla de calcular. En general existen diversas alternativas de solución para el mismo problema. En el caso de los cajeros se prefiere una heurística de acabar primero los billetes más grandes ya que de los chicos hay mayor cantidad.

Problema del Cajero Automático Otra solución de entre las mejores consiste en crear diversas soluciones para después comparar aquellas que sean más benéficas, pero esto requiere de tiempo y de espacio. Este problema se puede solucionar a través de autómatas (gramáticas), búsquedas ciegas, búsquedas heurísticas y algoritmos de planificación.

Problema del Cajero Automático Tarea: realizar un programa que funcione como cajero automático. El usuario deberá introducir un valor a retirar y el cajero deberá indicarle la combinación de dinero. El programa debe preguntar la cantidad de billetes al inicio de la simulación, por lo que se puede calcular el total de dinero. Existe un límite máximo de retiro de $4000 en múltiplos de 50

Problema del Cajero Automático El cajero deberá validar que la cantidad no se pase y que el sistema la pueda dar (que sea múltiplo y haya recurso). En caso de que el sistema por falta de recurso del sistema no pueda cubrir la cantidad total, se dará lo que quede en el cajero activando una alarma de dinero no disponible. El programa en cada transacción mostrará la cantidad de billetes disponibles así como la combinación de billetes entregada.

Problema del Cajero Automático El programa deberá mostrar cuantos clientes ha atendido (este parámetro será el que mida el desempeño del sistema para las mismas entradas). Se deberá ejecutar el programa n veces hasta que se acabe el dinero. Se recomienda que se realice una opción de simulación en donde se generen retiros al azar.

Árboles Investigación sobre que es un árbol de juegos y un árbol de decisión

Árboles y Búsqueda con Adversarios Métodos Algorítmicos En este tipo de búsqueda no sólo importa los movimientos de una persona o proceso implica además considerar otro factor cambiante llamado jugador adversario. Todo método de búsqueda con adversario debe de tener los siguientes elementos: estado inicial, función sucesor, test terminal y una función de utilidad que ayuda a determinar los pesos.

Búsqueda con Adversarios El algoritmo más representativo es el algoritmo minimax donde a un jugador se le asigna las propiedades de max y al otro min. Las decisiones de que ruta tomar se toman en base a la siguiente función: vMiniMax(n) = Utilidad(n) si n es un estado terminal ó max elemento s perteneciente a sucesores(n) vMiniMax(s) si n es un estado MAX ó

Búsqueda con Adversarios min elemento s de sucesores(n) vMiniMax(s) si n es un estado min. Por ejemplo para el juego del gato, la función para vMiniMax contaría todas aquellas posiciones que están libres para MAX – todas aquellas posiciones para MIN. Si la posición es ganadora para MAX devuelve un número infinito positivo, si la posición es ganadora para MIN

Algoritmo Minimax Función MiniMax(Estado) Devuelve Acción V ← Valor_Max(Estado) devolver Acción de Sucesores[Estado] con valor V. Función Valor_Max(Estado) Devuelve Utilidad Si test_terminal(Estado) Entonces Devolver Utilidad[Estado] V ← –∞

Algoritmo Minimax Para cada S ∈ sucesores[Estado] Hacer V ← Max(V, Valor_MIn(S)) devolver V Función Valor_Min(Estado) Devuelve Utilidad Si test_terminal(Estado) Entonces Devolver Utilidad[Estado] V ← ∞

Algoritmo Minimax Para cada S ∈ sucesores[Estado] Hacer V ← Min(V, Valor_Max(S)) devolver V

Poda Alfa-Beta Es muy parecido al algoritmo de MiniMax pero permite no expandir nodos que no se vayan a ocupar. En un juego es imposible o impráctico realizar todo el árbol de juego. Una mejor forma es almacenar los elementos del árbol que ya se tienen para que no haya necesidad de volver a calcularlos.

Poda Alfa-Beta Es un algoritmo que pretende mejor al algoritmo minimax calculando dos valores umbrales, que representan las cotas inferior (Alfa) para los nodos maximizantes y una cota superior (Beta) para los nodos minimizantes. Función Alfa-Beta(Estado) Devuelve Acción V ← Valor_Max(Estado, –∞, ∞) devolver Acción de Sucesores[Estado] con valor V.

Poda Alfa-Beta Función Valor_Max(Estado,Alfa,Beta) Devuelve Utilidad Si test_terminal(Estado) Entonces Devolver Utilidad[Estado] V ← –∞ Para cada S ∈ sucesores[Estado] Hacer V ← Max(V, Valor_Min(S,Alfa,Beta)) Si V ≥ Beta Entonces devolver V Alfa ← Max(Alfa,V) devolver V

Poda Alfa-Beta Función Valor_Min(Estado,Alfa,Beta) Devuelve Utilidad Si test_terminal(Estado) Entonces Devolver Utilidad[Estado] V ← ∞ Para cada S ∈ sucesores[Estado] Hacer V ← Min(V, Valor_Max(S,Alfa,Beta)) Si V ≤ Alfa Entonces devolver V Beta ← Min(Beta,V) devolver V

Árboles y Búsqueda con Adversarios Métodos Heurísticos Las heurísticas pueden ser muy variadas y depender del tipo de juego. Para el juego de ajedrez, se puede definir matemáticamente una función que permita encontrar la mejor jugada a realizar. Como se puede hacer esto?, a través de la colocación de valores a los distintos tipos de elementos como los caballosmreyna, etc.

Bibliografía Winston, P. (1992) Artificial Intelligence, 3ra. Edición, Addison-Wesley. Fabio Bellifemine, Giovanni Caire, Agostino Poggi, Giovanni Rimassa, 2008, JADE: A software framework for developing multi-agent applications. Lessons learned, Information and Software Technology, 50(1): 10-21. http://jade.tilab.com/

¿Preguntas, dudas y comentarios?