You are on page 1of 46

ALGORITMOS DE BSQUEDA

Ing. Ronald A. Rentera Ayquipa


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

You might also like