Você está na página 1de 9

4.

Bsqueda
Eduardo Morales - 1999-06-18 http://ccc.inaoep.mx/~emorales/Cursos/RdeC/node1.html

4.1 Solucin de Problemas 4.2 Bsqueda o 4.2.1 Propiedades o 4.2.2 Depth first - backtracking (LIFO) o 4.2.3 Breadth first 4.2.3.1 Complejidad 4.3 Algoritmos con Informacin o 4.3.1 Hill-Climbing o 4.3.2 Best- first o 4.3.3 Beam search o 4.3.4 Espacio Usado o 4.3.5 Mejor Solucin o 4.3.6 Branch and Bound o 4.3.7 Dynamic Programming o 4.3.8 A*: combinacin de todos o 4.3.9 Bsqueda en Lisp o 4.3.10 Bsqueda en Prolog

4.1 Solucin de Problemas


Asociado a la inteligencia Proceso ``normal''

identificacin y definicin del problema identificacin del criterio de evaluacin generacin de alternativas bsqueda de una solucin y evaluacin seleccin de opcin y recomendacin implementacin

Solucin de problemas en IA: bsicamente bsqueda y evaluacin Representacin de espacio de estados


define un espacio de estados (espacio con todas las posibles soluciones potenciales implcita / explcitamente enumerado especifica los estados iniciales o situaciones de donde empezar especifica los estados finales (metas) o aquellos reconocidos como soluciones especifica las reglas que definen las acciones u operaciones disponibles para moverse o ir de un estado a otro dentro del espacio del problema

En este contexto el proceso de solucin de problemas trata de encontrar una secuencia de operaciones que transformen al estado inicial en uno final. En la prctica se necesita seguir una estrategia de bsqueda

4.2 Bsqueda

Necesaria Heursticas/criterios/mtodos/principios/...

Criterios simple discriminante entre buenas/malas opciones ej., escoger fruta, ..., jugar ajedrez Para el problema de las 8 reinas podemos tener diferentes opciones: Solucin en un solo paso: ver la solucin consultar un vidente ... Alternativas: solucin incremental sistemtica Medios (espacio de estados): transformar (hasta darle) construir (poco a poco) Posible heurstica: poner una reina por rengln en un lugar que deje el mayor nmero de lugares sin atacar. Existen problemas como el del problema del agente viajero (TSP) que son NP (nopolinomial): crece exponencialmente con el nmero de ciudades en el peor de los casos Cmo encontramos una buena heurstica? Cmo debemos usarla para que sea ms efectiva? Cmo la evaluamos? Factores a considerar: calidad de la solucin (a veces puede no importar, ej, prueba de teoremas) diferencia en complejidad entre una solucin y la solucin ptima puede ser gigantesca (ej., TSP) en general, cmo encontrar la solucin ms barata Que necesitamos: 1. Estructura simblica que represente subconjunto de soluciones potenciales (cdigo o base de datos o agenda) 2. Operaciones/reglas de produccin que modifiquen smbolos de la base de datos y produzcan conjuntos ms refinados de soluciones potenciales 3. Procedimiento de bsqueda o estrategias de control que decida que operacin aplicar a la base de datos Terminologa: nodo, rbol, hoja, nodo-raz, nodo-terminal, branching factor, ramas, padres, hijos, rbol uniforme, ...

nodos expandidos ( closed ) (todos los sucesores) nodos explorados pero no expandidos (solo algunos sucesores) nodos generados pero no explorados (open ) nodos no generados Paso computacional primordial: expansin de nodos

4.2.1 Propiedades 4.2.2 Depth first - backtracking (LIFO) 4.2.3 Breadth first o 4.2.3.1 Complejidad

4.2.1 Propiedades La estrategia de control es sistemtica si: 1. no deja un solo camino sin explorar (completo) 2. no explora un mismo camino ms de una vez (eficiencia) Propiedades de algoritmos de bsqueda (heursticas): 1. Completo: un algoritmo se dice que es completo si encuentra una solucin cuando sta existe 2. Admisible : Si garantiza regresar una solucin ptima cuando sta existe. 3. Dominante: un algoritmo A1 se dice que domina a A2 si todo nodo expandido por A1 es tambin expandido por A2 (``ms eficiente que''). 4. ptimo: un algoritmo es ptimo sobre una clase de algoritmos si domina todos los miembros de la clase. Procedimiento de Bsqueda Algn Camino: o Sin Informacin: depth-fist (en profundo) breadth- first (a lo ancho) o Con informacin: hill climbing beam search best first El mejor camino: o British museum o branch and bound o (variante: dynamic programming) o A* Juegos o minimax o alpha-beta o (variantes: progressive deepening, heuristic pruning, heuristic continuation) o SSS* o SCOUT

4.2.2 Depth first - backtracking (LIFO)


Crea una agenda de un elemento (el nodo raz) hasta que la agenda este vaca o se alcance la meta si el primer elemento es la meta entonces acaba si no elimina el primer elemento y aade sus sucesores al frente de la agenda

Problemas: rboles con caminos de profundidad muy grande. Variaciones:


depth-bound (casi todos): limitar la bsqueda hasta cierto lmite de profundidad Con algo de informacin: ordena los nodos expandidos

4.2.3 Breadth first


Crea una agenda de un elemento (el nodo raz) hasta que la agenda este vaca o se alcance la meta si el primer elemento es la meta entonces acaba si NO elimina el primer elemento y aade sus sucesores al final de la agenda

Problemas: rboles con arborecencia muy grande

4.2.3.1 Complejidad
Comparacin en nodos buscados:
Si n = profundidad del rbol b = braching factor d = profundidad de un nodo meta

depth-first: mejor caso: d nodos buscados peor caso:

breadth- first: mejor caso:

peor caso:

Si n es finito, d < n y rbol balanceado, depth- first ms probable que sea mejor

4.3 Algoritmos con Informacin


4.3.1 Hill-Climbing 4.3.2 Best- first 4.3.3 Beam search 4.3.4 Espacio Usado 4.3.5 Mejor Solucin 4.3.6 Branc h and Bound 4.3.7 Dynamic Programming 4.3.8 A*: combinacin de todos 4.3.9 Bsqueda en Lisp 4.3.10 Bsqueda en Prolog

4.3.1 Hill-Climbing
Crea una agenda de un elemento (el nodo raz) hasta que la agenda este vaca o se alcance la meta si el primer elemento es la meta entonces acaba si no elimina el primer elemento y aade sus sucesores a la agenda ordena todos los elementos de la agenda selecciona el mejor y elimina el resto

Problemas: mximos locales, valles, picos 4.3.2 Best-first


Crea una agenda de un elemento (el nodo raz) hasta que la agenda este vaca o se alcance la meta si el primer elemento es la meta entonces acaba si no elimina el primer elemento y aade sus sucesores a la agenda ordena todos los elementos de la agenda

4.3.3 Beam search


Crea una agenda de un elemento (el nodo raz) hasta que la agenda este vaca o se alcance la meta si el primer elemento es la meta entonces acaba si no elimina el primer elemento y aade sus sucesores a la agenda ordena todos los elementos de la agenda y selecciona los N mejores (los dems elimnalos)

Problemas: parecido a hill climbing pero con ms ``visin''

4.3.4 Espacio Usado


depth-first: (b-1)*n + 1 breadth- first: bd hill-climbing: 1 best-first: entre bn y bd beam-seach: beam

4.3.5 Mejor Solucin Cuando importa el costo de encontrar una solucin. Si g(P) es el costo de camino o solucin parcial, la solucin ptima es aquella con g(P) mnima. Una forma segura: bsqueda exhaustiva y seleccionar el de menor costo (Brittish Museum). Best-first no es admisible, pero con una pequea variante ya lo es. 4.3.6 Branch and Bound Trabaja como best- first pero en cuanto se encuentra una solucin sigue expandiendo los nodos de costos menores al encontrado.
Crea una agenda de un elemento (el nodo raz) hasta que la agenda este vaca o se alcance la meta y los dems nodos sean de costos mayores o iguales a la meta si el primer elemento es la meta y los dems nodos son de menor o igual costo a la meta entonces acaba si no elimina el primer elemento y aade sus sucesores a la agenda ordena todos los elementos de la agenda

Mejoras: usar estimaciones de los costos/distancias que faltan junto con los costos/distancias acumuladas estim(total) = costo(camino recorrido) + estim(camino que falta) Las estimaciones no son perfectas, por lo que se usan sub-estimaciones subestim(total) = costo(camino recorrido) + subestim(camino que falta) De nuevo expande hasta que los dems tengan sub-estimaciones ms grandes (ej., subestimaciones de distancias entre ciudades pueden ser lineas rectas)
Crea una agenda de un elemento (el nodo raz) hasta que la agenda este vaca o se alcance la meta y los dems nodos sean de costos mayores o iguales a la meta si el primer elemento es la meta y los dems nodos son de menor o igual costo a la meta entonces acaba si no elimina el primer elemento y aade sus sucesores a la agenda

ordena todos los elementos de la agenda de acuerdo al costo acumulado ms las subestimaciones de los que falta

4.3.7 Dynamic Programming Idea: no explorar caminos a los que ya llegamos por caminos ms cortos/baratos. El algoritmo es igual slo hay que aadir la condicin: elimina todos los caminos que lleguen al mismo nodo excepto el de menor costo. 4.3.8 A*: combinacin de todos

Crea una agenda de un elemento (el nodo raz) hasta que la agenda este vaca o se alcance la meta y los dems nodos sean de costos mayores o iguales a la meta si el primer elemento es la meta y los dems nodos son de menor o igual costo a la meta entonces acaba si no elimina el primer elemento y aade sus sucesores a la agenda ordena todos los elementos de la agenda de acuerdo al costo acumulado mas las subestimaciones de los que falta elimina todos los caminos que lleguen al mismo nodo, excepto el de menor costo

Cuando usamos cada una?


si el tamao de bsqueda es pequeo (rara vez), podemos hacer bsqueda exhaustiva sin informacin depth- first con progressive-deepening branch and bound en general est bien dynamic programming cuando existen muchos posibles caminos con cruces A* cuando podemos tener una buena subestimacin

Todas estas estrategias tienen su equivalente para rboles AND-OR. Para hacer un depth first en un rbol del tipo AND - OR
IF alguno de los nodos AND falla, realiza backtracking hasta el ltimo nodo OR IF alguno de los nodos OR falla realiza backtracking al nodo inmediato anterior

La idea se puede extender a best-first. Hay que tener cuidado con el mejor y el candidato. Antes: una agenda con nodos OR. Ahora: cada nodo puede tener varios nodos asociados. En general se usan 2 funciones de estimacin: f1: evala sobre los nodos (como antes) f2: evala sobre rboles Para etiquetar Solucin (S) / no-solucin (N):

IF nodo terminal es meta: S Else: N IF nodo no-terminal es AND: S si todos son S N si alguno es N IF nodo no-terminal es OR: S si alguno es S N si todos son N

Similarmente para A* existe un correspondiente AO*. Como encontrar heursticas? analizando modelos simplificados soluciones por descomposicin: si cada submeta se puede solucionar independientemente de las otras soluciones parcialmente ordenadas usar probabilidades 4.3.9 Bsqueda en Lisp
(defun busca (nodoI, nodoF) (busca2 (list nodoI) nodoF)) (defun busca2 (agenda nodoF) (cond ((null agenda) nil) ((equal (car agenda) nodoF)) (t (busca2 (nva_agenda (car agenda) (cdr agenda)) nodoF)))) ; breath-first (defun nva_agenda (nodo agenda) (append (expande nodo) agenda)) ; depth search (defun nva_agenda (nodo agenda) (append agenda (expande nodo))) ; best-first search (defun nva_agenda (nodo agenda) (sort (append (expande nodo) agenda))) ; hill-climbing (defun nva_agenda (nodo agenda) (list (car (sort (append (expande nodo) agenda))))) ; beam search (defun nva_agenda (beam nodo agenda) (nthelems beam (sort (append (expande nodo) agenda))))

4.3.10 Bsqueda en Prolog


busca(NodoI,NodoF) :busca_aux([NodoI],NodoF). busca_aux([NodoF|_],NodoF). busca_aux(Agenda,NodoF) :nva_agenda(Agenda,NAgenda), busca_aux(NAgenda,NodoF).

% depth-first nva_agenda([N1|Agenda],NAgenda) :expande(N1,Nodos), append(Nodos,Agenda,NAgenda). % breadth-first nva_agenda([N1|Agenda],NAgenda) :expande(N1,Nodos), append(Agenda,Nodos,NAgenda). % best first nva_agenda([N1|Agenda],NAgenda) :expande(N1,Nodos), append(Nodos,Agenda,AgendaInt), sort(AgendaInt,NAgenda). % hill-climbing nva_agenda([N1|Agenda],[Mejor]) :expande(N1,Nodos), append(Nodos,Agenda,AgendaInt), sort(AgendaInt,[Mejor|_]).

Você também pode gostar