Tipos de algoritmos de bsqueda Algoritmos de Bsqueda Tipos Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa ALGORITMOS DE BSQUEDA NO INFORMADA ALGORITMOS DE BSQUEDA HEURSTICA Bsqueda no informada Conocidos como algoritmos de bsqueda ciega No dependen de la informacin del problema Son generales (aplicables a cualquier problema) Algoritmos exhaustivos (pueden llegar a recorrer todo el rbol para llegar a una solucin) Aplicables a problemas pequeos Polticas de recorrido: En anchura (Anchura prioritaria) En profundidad (Profundidad prioritaria, Profundidad iterativa) Bsqueda no informada Introduccin Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa Bsqueda en Anchura Prioritaria Bsqueda no informada Bsqueda en anchura prioritaria Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa Los nodos se visitan y generan por niveles La estructura para los nodos abiertos es una cola (FIFO) Un nodo es visitado cuando todos los nodos de los niveles superiores y sus hermanos precedentes han sido visitados Caractersticas: Completitud: El algoritmo siempre encuentra una solucin Complejidad temporal: Exponencial respecto al factor de ramificacin y la profundidad de la solucin O(r p ) Complejidad espacial: Exponencial respecto al factor de ramificacin y la profundidad de la solucin O(r p ) Optimalidad: La solucin que se encuentra es ptima en nmero de niveles desde la raz Bsqueda en Profundidad Prioritaria Bsqueda no informada Bsqueda en profundidad prioritaria Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa Los nodos se visitan y generan buscando los nodos a mayor profundidad y retrocediendo cuando no se encuentran nodos sucesores La estructura para los nodos abiertos es una pila (LIFO) Para garantizar que el algoritmo acaba (caminos infinitos) debe imponerse un lmite en la profundidad de exploracin (profundidad limitada) Caractersticas Completitud: El algoritmo encuentra una solucin si se impone un lmite de profundidad y existe una solucin dentro de ese lmite Complejidad temporal: Exponencial respecto al factor de ramificacin y la profundidad del lmite de exploracin O(r p ) Complejidad espacial: En el caso de no controlar los nodos repetidos el coste es lineal respecto al factor de ramificacin y el lmite de profundidad O(rp). Si tratamos repetidos el coste es igual que en anchura. Si la implementacin es recursiva el coste es O(p) Optimalidad: No se garantiza que la solucin sea ptima Bsqueda en Profundidad Limitada Bsqueda no informada Bsqueda en profundidad limitada Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa La estructura de abiertos es ahora una pila Se dejan de generar sucesores cuando se llega al lmite de profundidad Esta modificacin garantiza que el algoritmo acaba pero no una solucin Si tratamos repetidos el ahorro en espacio es nulo Tratamiento de nodos repetidos Bsqueda no informada Tratamiento repetidos Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa En anchura Si el repetido est en la estructura de nodos cerrados podemos descartarlo. Tendr una profundidad igual o mayor al repetido cerrado (por tanto un costo igual o mayor) Si el repetido est en la estructura de nodos abiertos podemos descartarlo. Tendr una profundidad igual o mayor al repetido abierto (por tanto un costo igual o mayor) Tratamiento de nodos repetidos Bsqueda no informada Tratamiento repetidos Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa En profundidad Si el repetido est en la estructura de nodos cerrados lo dejaremos, si tiene una profundidad menor Si el repetido est en la estructura de nodos abiertos podemos olvidarlo, seguro que tiene una profundidad mayor Bsqueda en profundidad iterativa (ID) Bsqueda no informada Profundidad iterativa Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa Intenta combinar el comportamiento espacial de la bsqueda en profundidad (DFS) con la optimalidad de la bsqueda en anchura (BFS), por esto es el ms ventajoso de los anteriores. El algoritmo consiste en realizar bsquedas en profundidad sucesivas con un nivel de profundidad mximo acotado y creciente en cada iteracin As se consigue el comportamiento de BFS pero sin su coste espacial, ya que la exploracin es en profundidad, y adems los nodos se regeneran a cada iteracin Adems esto permite evitar los casos en que DFS no acaba (existen ramas infinitas) En la primera iteracin la profundidad mxima ser 1 y este valor ir aumentando en sucesivas iteraciones hasta llegar a la solucin Para garantizar que el algoritmo acaba si no hay solucin, se puede definir una cota mxima de profundidad en la exploracin Bsqueda en profundidad iterativa (ID) Bsqueda no informada Profundidad iterativa Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa Iteracin 1: 1 Iteracin 2: 2, 3, 4, 5 Iteracin 3: 6, 7, 8, 9, , 21 Bsqueda en profundidad iterativa (ID) Bsqueda no informada Profundidad iterativa Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa Bsqueda en profundidad iterativa (ID) Bsqueda no informada Profundidad iterativa Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa Completitud: El algoritmo siempre encontrar la solucin Complejidad temporal: La misma que la bsqueda en anchura. El regenerar el rbol en cada iteracin solo aade un factor constante a la funcin de coste O(r p ) Complejidad espacial: Igual que en la bsqueda en profundidad Optimalidad: La solucin es ptima igual que en la bsqueda en anchura Ejemplos Bsqueda no informada Ejemplos Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa En esta seccin vamos a ver ejemplos de ejecucin de los algoritmos vistos anteriormente. Utilizaremos los algoritmos de bsqueda ciega para encontrar una solucin (camino entre los nodos inicial y final) Supondremos que hacemos un tratamiento de los nodos repetidos durante la ejecucin del algoritmo. Hay que tener en cuenta tambin que para poder recuperar el camino, los nodos deben tener un enlace al padre que los ha generado. Ejemplos Bsqueda no informada Ejemplos Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa En la figura, podemos ver el grafo que vamos a utilizar en los siguientes ejemplos. Este grafo tiene como nodo inicial el 1 y como nodo final el 8, todos los caminos son dirigidos y tienen el mismo coste. Ejemplo: Bsqueda en anchura Bsqueda no informada Ejemplos Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa 1. Este algoritmo comenzara encolando el nodo inicial (nodo 1). 2. Los nodos sucesores del primer nodo son los nodos 2 y 3, que pasaran a ser encolados 3. El siguiente nodo extrado de la cola sera el 2, que tiene como sucesores el 4 y el 6. 4. El siguiente nodo extrado de la cola sera el 3, que tiene como sucesores el 4, el 5 y el 7. Como el 4 est repetido no se encolara al ser de la misma profundidad que el nodo repetido. 5. El siguiente nodo extrado de la cola sera el 4, que tiene como sucesor el 5. Como el 5 est repetido no se encolara al tener profundidad mayor que el nodo repetido. 6. El siguiente nodo extrado de la cola sera el 6, que tiene como sucesores el 7 y el 8. Como el 7 est repetido no se encolara al tener profundidad mayor que el nodo repetido. 7. El siguiente nodo extrado de la cola sera el 5, que tiene como sucesores el 6 y el 7. Como los dos nodos corresponden a nodos repetidos con profundidad menor, no se encolaran. 8. El siguiente nodo extrado de la cola sera el 7, que tiene como sucesor el 8. Como el 8 est repetido no se encolara al tener la misma profundidad que el nodo repetido. 9. El siguiente nodo extrado de la cola sera el 8 que es el nodo solucin y por tanto acabara la ejecucin. En la figura sgte. se puede ver el rbol de bsqueda que se genera. En el caso de los nodos cerrados necesitamos una estructura adicional para controlar los nodos repetidos (resultado) Ejemplo: Bsqueda en anchura Bsqueda no informada Ejemplos Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa Ejemplo: Bsqueda en profundidad Bsqueda no informada Ejemplos Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa 1. Este algoritmo comenzara empilando el nodo inicial (nodo 1). 2. Los nodos sucesores del primer nodo son los nodos 2 y 3, que pasaran a ser empilados 3. El siguiente nodo extrado de la pila sera el 2, que tiene como sucesores el 4 y el 6. 4. El siguiente nodo extrado de la pila sera el 4, que tiene como sucesor el 5. 5. El siguiente nodo extrado de la pila sera el 5, que tiene como sucesores el 6 y el 7. Como el nodo 6 est en la pila en con nivel superior descartaramos este nodo. 6. El siguiente nodo extrado de la pila sera el 7, que tiene como sucesor el 8. 7. El siguiente nodo extrado de la pila sera el 8 que es el nodo solucin y por tanto acabara la ejecucin. En la figura sgte. se puede ver el rbol de bsqueda que se genera. Fijarse que en este caso el camino es ms largo que el encontrado con el algoritmo anterior. Para el control de repetidos, si se quiere ahorrar espacio, pueden solo tenerse en cuenta los nodos que hay en la pila como se ha hecho en el ejemplo, esto evitar que podamos entrar en bucle y que tengamos que tener una estructura para los nodos cerrados. Ejemplo: Bsqueda en profundidad Bsqueda no informada Ejemplos Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa Ejemplo: Bsqueda en profundidad iterativa Bsqueda no informada Ejemplos Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa 1. Primera iteracin (profundidad 1) 1.1 Se comenzara empilando el nodo inicial (nodo 1). 1.2 Al extraer este nodo de la pila habramos visitado todos los caminos de profundidad 1 y con eso acabaramos la iteracin 2. Segunda Iteracin (profundidad 2) 2.1 Se comenzara empilando el nodo inicial (nodo 1). 2.2 Los nodos sucesores del primer nodo son los nodos 2 y 3, que pasaran a ser empilados. 2.3 El siguiente nodo extrado de la pila sera el 2, los nodos sucesores estaran a mayor profundidad que el lmite actual, no los empilaramos. 2.4 El siguiente nodo extrado de la pila sera el 3, los nodos sucesores estaran a mayor profundidad que el lmite actual, no los empilaramos. Al extraer este nodo de la pila habramos visitado todos los caminos de profundidad 2 y con eso acabaramos la iteracin. 3. Tercera Iteracin (profundidad 3) 3.1 Se comenzara empilando el nodo inicial (nodo 1). 3.2 Los nodos sucesores del primer nodo son los nodos 2 y 3, que pasaran a ser empilados. 3.3 El siguiente nodo extrado de la pila sera el 2, que tiene como sucesores el 4 y el 6. 3.4 El siguiente nodo extrado de la pila sera el 4, los nodos sucesores estaran a mayor profundidad que el lmite actual, no los empilaramos. 3.5 El siguiente nodo extrado de la pila sera el 6, los nodos sucesores estaran a mayor profundidad que el lmite actual, no los empilaramos. 3.6 El siguiente nodo extrado de la pila sera el 3, que tiene como sucesores el 4, el 5 y el 7. 3.7 El siguiente nodo extrado de la pila sera el 4, los nodos sucesores estaran a mayor profundidad que el lmite actual, no los empilaramos. 3.8 El siguiente nodo extrado de la pila sera el 5, los nodos sucesores estaran a mayor profundidad que el lmite actual, no los empilaramos. 3.9 El siguiente nodo extrado de la pila sera el 7, los nodos sucesores estaran a mayor profundidad que el lmite actual, no los empilaramos. Al extraer este nodo de la pila habramos visitado todos los caminos de profundidad 3 y con eso acabaramos la iteracin. 4. Cuarta Iteracin (profundidad 4) 4.1 Se comenzara empilando el nodo inicial (nodo 1). 4.2 Los nodos sucesores del primer nodo son los nodos 2 y 3, que pasaran a ser empilados. 4.3 El siguiente nodo extrado de la pila sera el 2, que tiene como sucesores el 4 y el 6. 4.4 El siguiente nodo extrado de la pila sera el 4, que tiene como sucesor el 5. 4.5 El siguiente nodo extrado de la pila sera el 5, los nodos sucesores estaran a mayor profundidad que el lmite actual, no los empilaramos. 4.6 El siguiente nodo extrado de la pila sera el 6, que tiene como sucesores el 7 y el 8. 4.7 El siguiente nodo extrado de la pila sera el 7, los nodos sucesores estaran a mayor profundidad que el lmite actual, no los empilaramos. 4.8 El siguiente nodo extrado de la pila sera el 8 que es el nodo solucin y por tanto acabara la ejecucin. Ejemplo: Bsqueda en profundidad iterativa Bsqueda no informada Ejemplos Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa En la figura, se puede ver el rbol de bsqueda que se genera. En este caso encontramos el camino ms corto, ya que este algoritmo explora los caminos en orden de longitud como la bsqueda en anchura. Para mantener la ganancia en espacio en este caso no se han guardado los nodos cerraros, es por ello que no se ha tratado en nodo 4 en el paso 3.7 como repetido. BSQUEDA HEURSTICA Bsqueda heurstica Introduccin Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa Supone la existencia de una funcin de evaluacin que debe medir la distancia estimada al (a un) objetivo (h(n)) Esta funcin de evaluacin se utiliza para guiar el proceso haciendo que en cada momento se seleccione el estado o las operaciones ms prometedoras No siempre se garantiza encontrar una solucin (de existir sta) No siempre se garantiza encontrar la solucin ms prxima (la que se encuentra a una distancia o nmero de operaciones menor) Existen mltiples algoritmos: Branch and Bound, Best First Search A, A* IDA* Bsqueda local (Hill climbing, Simulated annealing, Alg. Genticos) Branch and Bound Bsqueda heurstica Branch and Bound Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa Ramificacin y acotacin Generaliza las bsquedas en anchura prioritaria (BFS) y en profundidad prioritaria (DFS) Se guarda para cada estado el coste (hasta el momento) de llegar desde el estado inicial a dicho estado. Guarda el coste mnimo global hasta el momento Deja de explorar una rama cuando su coste es mayor que el mnimo actual Si el coste de los nodos es uniforme equivale a una bsqueda por niveles Greedy Best First Bsqueda heurstica Greedy best first Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa La estructura de abiertos es una cola con prioridad La prioridad la marca la funcin de estimacin (coste del camino que falta hasta la solucin) En cada iteracin se escoge el nodo ms cercano a la solucin (el primero de la cola), esto provoca que no se garantice la solucin optima Importancia del estimador Bsqueda heurstica Heursticos Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa Importancia del estimador Bsqueda heurstica Heursticos Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa Heursticos Bsqueda heurstica Heursticos Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa Posibles heursticos (estimadores del coste a la solucin) h(n) = w(n) = #desclasificados h(n) = p(n) = suma de distancias a la posicin final h(n) = p(n) + 3 s(n) donde s(n) se obtiene recorriendo las posiciones no centrales y si una ficha no va seguida por su sucesora sumar 2, si hay ficha en el centro sumar 1 Costes Bsqueda heurstica Heursticos Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa Bsqueda A* Bsqueda heurstica Bsqueda A* Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa La funcin de evaluacin tiene dos componentes: 1. coste para ir desde el (un) inicio al nodo actual 2. coste (estimado) para ir desde el nodo actual a una solucin f es un valor estimado del coste total del camino que pasa por n h (heurstico) es un valor estimado de lo que falta para llegar desde n al (a un) objetivo g es un coste real (lo gastado por el camino ms corto conocido hasta n) La preferencia es siempre del nodo con menor f, en caso de empate, la preferencia es del nodo con menor h. f (n) = g(n) + h(n) Bsqueda A* Bsqueda heurstica Bsqueda A* Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa Con esta funcin podemos variar el comportamiento del algoritmo Si n h(n) = 0, todo estar controlado por g (estaremos en presencia de un algoritmo de Branch & Bound) Si n h(n) = 0 y adems el coste de todos los arcos es 1 estaremos realizando una bsqueda en anchura. Si dicho coste fuera 0, la bsqueda sera aleatoria Al ser h una estimacin del verdadero coste h*, cuanto ms se aproxime h a h* mayor ser la tendencia a explorar en profundidad. Si h = h* entonces A* converge directamente hacia el objetivo Se puede demostrar que si h(n) es un minorante del coste real h*(n), es decir si n h(n) h*(n) A* encontrar (de haberlo) un camino ptimo. El algoritmo A* Bsqueda heurstica Bsqueda A* Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa La estructura de abiertos es una cola con prioridad La prioridad la marca la funcin de estimacin (f (n) = g(n) + h(n)) En cada iteracin se escoge el mejor camino (el primero de la cola) Es el mismo algoritmo que el Best First! Tratamiento de repetidos Bsqueda heurstica Bsqueda A* Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa Si es un repetido que est en la estructura de abiertos Si su coste es menor substituimos el coste por el nuevo, esto podr variar su posicin en la estructura de abiertos Si su coste es igual o mayor nos olvidamos del nodo Si es un repetido que esta en la estructura de cerrados Si su coste es menor reabrimos el nodo insertndolo en la estructura de abiertos con el nuevo coste Atencin! No hacemos nada con sus sucesores, ya se reabrirn si hace falta Si su coste es mayor o igual nos olvidamos del nodo A* Ejemplo Bsqueda heurstica Bsqueda A* Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa A* Ejemplo Bsqueda heurstica Bsqueda A* Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa A* Ejemplo Bsqueda heurstica Bsqueda A* Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa A* Ejemplo Bsqueda heurstica Bsqueda A* Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa A* Ejemplo Bsqueda heurstica Bsqueda A* Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa A* Ejemplo Bsqueda heurstica Bsqueda A* Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa A* Ejemplo Bsqueda heurstica Bsqueda A* Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa A* Ejemplo Bsqueda heurstica Bsqueda A* Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa A* Ejemplo Bsqueda heurstica Bsqueda A* Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa A* Ejemplo Bsqueda heurstica Bsqueda A* Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa A* Ejemplo Bsqueda heurstica Bsqueda A* Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa A* Ejemplo Bsqueda heurstica Bsqueda A* Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa Bsqueda IDA* Bsqueda heurstica Bsqueda IDA* Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa Similar a ID (es decir iteracin de bsqueda en profundidad con un lmite en la bsqueda) En ID el lmite lo daba una cota mxima en la profundidad En IDA* el lmite lo da una cota mxima sobre el valor de la funcin f Ojo! La bsqueda es una DFS normal y corriente, el heurstico f slo se utiliza para podar Empezamos con corte = f(inicial) Algoritmo IDA* Bsqueda heurstica Bsqueda IDA* Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa La funcin generar_sucesores solo genera aquellos con una f menor o igual a la del lmite de la iteracin La estructura de abiertos es ahora una pila (bsqueda en profundidad) Hemos de tener en cuenta que si tratamos los nodos repetidos el ahorro en espacio es nulo Otros algoritmos con limitacin de memoria Bsqueda heurstica Bsqueda con limitacin de memoria Inteligencia Artificial Ing. Ronald A. Rentera Ayquipa Las reexpansiones de IDA* pueden suponer un elevado coste temporal Existen algoritmos que por lo general reexpanden menos nodos Su funcionamiento se basa en eliminar los nodos menos prometedores y guardar informacin que permita reexpandirlos Ejemplos: Best first recursivo Memory Bound A* (MA*)