técnicas de búsqueda m.c. juan carlos olivares rojas [email protected]...

43
Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas [email protected] [email protected] @jcolivares http://antares.itmorelia.edu.mx/~jc olivar

Upload: custodia-barro

Post on 09-Feb-2015

10 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Técnicas de Búsqueda

M.C. Juan Carlos Olivares Rojas

[email protected]@hotmail.com

@jcolivareshttp://antares.itmorelia.edu.mx/~jcolivar

Febrero, 2010

Page 2: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

OutlineMétodos CiegosBúsqueda HeurísticaLa mejor trayectoriaTrayectorias Redundantes

Árboles y Búsqueda con Adversarios Métodos Algorítmicos

Árboles y Búsqueda con Adversarios Métodos Heurísticos

Page 3: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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.

Page 4: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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.

Page 5: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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.

Page 6: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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:

Page 7: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Búsqueda en Anchura

1. Se introduce el vértice inicial en P y se elimina del conjunto.

2. Mientras V’ no sea vacío repetir los puntos 3 y 4. En otro caso parar.

3. Se toma el primer elemento de P como vértice activo.

Page 8: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Búsqueda en Anchura

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

Page 9: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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.

Page 10: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Búsqueda Heurística

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

Page 11: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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.

Page 12: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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

Page 13: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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.

Page 14: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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.

Page 15: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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

Page 16: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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.

Page 17: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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)

Page 18: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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.

Page 19: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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.

Page 20: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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.

Page 21: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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.

Page 22: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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.

Page 23: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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

Page 24: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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.

Page 25: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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.

Page 26: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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.

Page 27: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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

Page 28: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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.

Page 29: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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.

Page 30: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Árboles• Investigación sobre que es un árbol de

juegos y un árbol de decisión

Page 31: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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

Page 32: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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 ó

Page 33: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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

Page 34: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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 ← –∞

Page 35: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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 ← ∞

Page 36: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

Algoritmo Minimax

Para cada S ∈ sucesores[Estado] Hacer

V ← Min(V, Valor_Max(S))devolver V

Page 37: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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.

Page 38: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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.

Page 39: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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] HacerV ← Max(V, Valor_Min(S,Alfa,Beta))Si V ≥ Beta Entonces devolver VAlfa ← Max(Alfa,V)devolver V

Page 40: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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] HacerV ← Min(V, Valor_Max(S,Alfa,Beta))Si V ≤ Alfa Entonces devolver VBeta ← Min(Beta,V)devolver V

Page 41: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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

Page 42: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

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/

Page 43: Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares jcolivar

¿Preguntas, dudas y comentarios?