UNIVERSIDAD DE LA SALLE BAJÍO ALGORITMOS DE BÚSQUEDA BEAM SEARCH luisgsl@yahoo.com MISEC Tercer cuatrimestre Tecnologías Aplicadas de Información Mtra. M.I. convazquezl@yahoo.com León, Gto. a 11 de junio de 2004. Índice Solución de problemas con búsquedas Tipos de búsqueda Algoritmo de búsqueda Beam search Análisis de los algoritmos Fuente de Información 2 3 4 6 7 1 Solución de problemas con búsquedas La formulación de metas es el primer paso en la solución de problemas. Se considera que las metas son estados del mundo. Las operaciones o acciones son las causantes de la transición entre un estado y otro. La formulación de un problema consiste en decidir que acciones y estados son válidos. El espacio de estados es el conjunto de todos los estados que pueden alcanzarse a partir del estado inicial mediante cualquier secuencia de acciones. La solución del problema consiste en encontrar una secuencia de acciones posibles que conduzcan a la meta. Al proceso de hallar tal secuencia se conoce como búsqueda. Representación: Un espacio de estados se puede representar con una gráfica (ej. árbol) donde los nodos son estados de un problema o soluciones parciales de éste y los arcos son acciones u operaciones que se aplican a los nodos para pasar de un estado a otro. En una gráfica con estado inicial y estados finales (o metas), el proceso de búsqueda consiste en encontrar un camino en la gráfica que vaya del estado inicial a un estado final. Ejemplo: El agente viajero. Estado Meta o estado final = G inicial=S Espacio de estados representado por una gráfica Espacio de estados representado por un árbol 2 Tipos de búsqueda: Sin información (ciega): o depth-first (por profundidad), o breath-first (a lo ancho) Con información (heurística): o hill-climbing o beam search o best-first search Búsquedas óptimas (El mejor camino): o british museum o branch and bound o programación dinámica o A* Búsquedas sin información Algoritmo de búsqueda por profundidad (depth-first): 1. Crear una lista con el nodo raíz 2. Hasta que la lista esté vacía o se alcance la meta: 1. Si el primer elemento es la meta entonces termina Sino elimina el primero de la lista y agrega sus hijos al principio de la lista Álgoritmo de búsqueda a lo ancho (breath-first): 1. Crear una lista con el nodo raíz 2. Hasta que la lista esté vacía o se alcance la meta: 1. Si el primer elemento es la meta entonces termina Sino elimina el primero de la lista y agrega sus hijos al final de la lista Análisis de los algoritmos: n= número de niveles d= número de niveles hasta la meta b= Número de operaciones posibles en un estado (hijos). Factor de arborecencia. Por profundidad: Mejor caso = d Peor caso ~ bn Es mejor en árboles balanceados A lo ancho: 3 Mejor caso ~ bd-1 Peor caso ~ bd Es mejor en árboles desbalanceados y con mucha profundidad Búsquedas (heurísticas) con información Algoritmo de búsqueda Hill Climbing: 1. Crear una lista con el nodo raíz 2. Hasta que la lista esté vacía o se alcance la meta: 1. Si el primer elemento es la meta entonces termina Sino elimina el primero de la lista y agrega sus hijos al final de la lista 2. Ordena los elementos, selecciona el mejor y elimina el resto (heurística) Desventajas: no es completo, no funciona cuando existen máximos locales, pues no puede llegar a la meta. Algoritmo de búsqueda Best-first: 1. Crear una lista con el nodo raíz 2. Hasta que la lista esté vacía o se alcance la meta: 1. Si el primer elemento es la meta entonces termina Sino elimina el primero de la lista y agrega sus hijos al final de la lista 2. Ordena los elementos, pero no hace eliminaciones (heurística) Ventaja: es completo, encuentra siempre la solución. Algoritmo de búsqueda Beam search: 1. Crear una lista con el nodo raíz 2. Hasta que la lista esté vacía o se alcance la meta: 1. Si el primer elemento es la meta entonces termina Sino elimina el primero de la lista y agrega sus hijos al final de la lista 2. Ordena los elementos, selecciona los w mejores y elimina el resto (heurística) Desventaja: no es completo, no garantiza encontrar la solución. Propiedades de los algoritmos La estrategia de control es sistemática si: 1. No deja un solo camino sin explorar (completo) 2. No explora un camino más de una vez (eficiencia) 4 Un algoritmo búsqueda es: 1. Completo: si encuentra una solución cuando esta existe. 2. Admisible: si garantiza una solución óptima cuando ésta existe. 3. Dominante. Un algoritmo A1 domina a otro algoritmo A2 si cada nodo expandido de A2 puede ser expandido por A1. 4. Óptimo: Si domina a todos los algoritmos que hacen la misma tarea. Búsquedas óptimas Algoritmo British museum Hace una búsqueda exhaustiva para encontrar todas las soluciones (con depthfirst o breath-first), compara las soluciones y selecciona la mejor. Desventaja: El espacio de búsqueda puede crecer considerablemente. Algoritmo Branch and Bound 1. Crear una lista con el nodo raíz 2. Hasta que la lista esté vacía o se alcance la meta: 1. Si el primer elemento es la meta entonces ve al paso 3 Sino elimina el primero de la lista y agrega sus hijos sumando el costo acumulado del padre 2. Ordena los elementos de acuerdo al costo (heurística) 3. Expande todos los nodos con costo menor que el nodo meta. Ventaja: La primer trayectoria encontrada es la solución óptima. Una mejora a Branch and bound es utilizar programación dinámica. Esta técnica considera que se puede llegar a un mismo nodo por diferentes rutas, su heurística es ordenar los elementos, seleccionar el de menos costo y eliminar los elementos repetidos (con mayor costo). Algoritmo A* (A estrella) Es una clase de algoritmo que utiliza programación dinámica y una función heurística (h), que ayuda a que la búsqueda sea más eficiente. Ejemplo de una heurística: h(n)= costo subestimado del nodo n hasta la meta. La restricción consiste en escoger una heurística admisible (que nunca sobreestima el costo de llegar a la meta). El costo total estimado, f(n), es la suma del costo acumulado, g(n), más la función heurística, h(n): f(n) = g(n) + h(n) Algoritmo A* 1. Crear una lista con el nodo raíz 2. Hasta que la lista esté vacía o se alcance la meta: 1. Si el primer elemento es la meta entonces ve al paso 3 Sino elimina el primero de la lista y agrega sus hijos sumando g + h (heurística 1) 5 2. Ordena los elementos de acuerdo al costo y elimina los repetidos de costo mayor (heurística 2) 3. Expande todos los nodos con costo menor que el nodo meta. Análisis de los algoritmos: British museum es mejor si el espacio de estados es pequeño. Branch and Bound con programación dinámica es mejor si hay muchas rutas para llegar a la meta. A* se puede usar sólo cuando es posible estimar h(n). En los demás casos es mejor Branch and Bound. 6 Fuente de Información http://leibniz.iimas.unam.mx/~euraga/ia/busqueda.html http://lorien.die.upm.es/~juancho/pfcs/aga/dos.txt 7