La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

M.C. Juan Carlos Olivares Rojas

Presentaciones similares


Presentación del tema: "M.C. Juan Carlos Olivares Rojas"— Transcripción de la presentación:

1 M.C. Juan Carlos Olivares Rojas
Técnicas de Búsqueda M.C. Juan Carlos Olivares Rojas @jcolivares Febrero, 2010

2 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

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

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

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

6 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:

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

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

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

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

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

12 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

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

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

15 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

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

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

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

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

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

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

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

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

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

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

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

27 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

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

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

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

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

32 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 ó

33 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

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

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

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

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

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

39 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

40 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

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

42 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):

43 ¿Preguntas, dudas y comentarios?


Descargar ppt "M.C. Juan Carlos Olivares Rojas"

Presentaciones similares


Anuncios Google