Métodos de Búsqueda y Ejemplos Prácticos
LOS SISTEMAS DE BÚSQUEDA
Introducción a los sistemas de búsquedas.
En inteligencia artificial el tema de búsquedas es central, dado que,
por ejemplo, realizar acciones mecanizadas o resolver problemas, se
reduce a buscar en un espacio de estados como se explicaba en el
apartado anterior. En esa disciplina se estudian búsquedas ciegas
(búsqueda primero en amplitud, primero en profundidad, profundidad
iterativa, de costo uniforme, etc.) y búsquedas inteligentes (búsqueda
avara, A*, IDA*, A* restricta por memoria simplificada, ascenso de cima
(hill-climbing), etc.)
Relacionado con la búsqueda del óptimo está el
problema del control de la búsqueda, control planteado por Newell y
Simon que ha generado una abundancia de trabajos en el campo de la
inteligencia artificial. Se trata de elegir entre búsquedas heurísticas
lo suficientemente buenas (no perfectas) como para que se pueda dar por
concluida la búsqueda con una aceptable respuesta al problema en un
lapso aceptable de tiempo.
No se discute que las búsquedas aumentan
"explosivamente" cuando el espacio de problema se vuelve demasiado
vasto por bifurcación de nodos a buscar o por incorporación de más
variables. Un control de búsqueda basado en técnicas mediocres también
llega a proponer una respuesta adecuada, aunque en un
tiempo demasiado largo. En un modelo de mundo o en un contexto con más
y más variables que participan y que no se reducen a un número
manejable por descarte, surge un problema de control de la búsqueda:
ella se vuelve "explosiva". El problema del control de búsqueda (por
ejemplo el problema del operador a elegir, el problema de la
planificación, etc.) aún está casi sin resolver.
El papel de la búsqueda en la Inteligencia Artificial
En Inteligencia Artificial (IA) los términos
resolución de problemas y búsqueda se refieren a un núcleo fundamental
de técnicas que se utilizan en dominios como la deducción, elaboración
de planes de actuación, razonamientos de sentido común, prueba
automática de teoremas, etc. Aplicaciones de estas ideas generales
aparecen en la práctica totalidad de los sistemas inteligentes, como
por ejemplo en los programas que tratan de entender el lenguaje
natural, en los programas que tratan de sintetizar un conjunto de
reglas de clasificación en un determinado dominio de actuación, o en
los sistemas que realizan inferencias a partir de un conjunto de
reglas.
Componentes de un sistema de búsqueda
La resolución de problemas en IA requiere,
normalmente, determinar una secuencia de acciones o decisiones. Esta
secuencia será ejecutada posteriormente por un agente con el fin de
alcanzar un objetivo a partir de una situación inicial dada.
Dependiendo del problema concreto, la ejecución de la secuencia de
acciones o decisiones tiene asociado un costo que se tratará de
minimizar, o bien tiene asociado un beneficio que se tratará de
maximizar. En la descripción de los sistemas de búsqueda, se supone que
el agente se mueve en un entorno accesible, o lo que es lo mismo, que
es capaz de percibir el entorno con precisión. Además, se supone
también que tanto el efecto como el coste o costo de las acciones se
pueden predecir con exactitud. De este modo, la secuencia de acciones
se puede obtener antes de su ejecución; en otro caso, la siguiente
acción no podría ser determinada hasta conocer el resultado de la
ejecución de la anterior.
Para elaborar una clasificación de los sistemas de búsqueda se tienen
muchas clasificaciones tantas como investigadores y autores en
inteligencia artificial existen, en el módulo se ha tratado de
organizar esta información para ofrecer un panorama lo más amplio
posible para que el estudiante abarque la mayor cantidad de
información, los nombres de los algoritmos y métodos de solución en
unos casos tienen diferencias que se aclaran en el transcurso del
documento. La siguiente clasificación se puede tomar como genérica para
tener una idea de las posibilidades de búsqueda.
Agentes para la solución de problemas
Son agentes basados en metas que determinan que deberán hacer por medio
de secuencias de acciones que les permitan obtener estados deseables.
Pasos para la solución de problemas:
Formulación de metas: se establece el objetivo
Formulación del problema: se decide que acciones y estados habrán de considerarse.
Búsqueda: evaluación de las posibles secuencias de acciones que le llevan a la meta y elección de la más apta.
Ejecución: se llevan adelante la solución que presenta la búsqueda.
Tipos de problemas:
- Problemas de un solo estado: el agente conoce con exactitud en que estado se encuentra y el resultado de cada una de sus acciones.
- Problemas de estados múltiples: el agente no conoce con exactitud en que estado se encuentra, pero si el resultado de cada una de sus acciones.
- Problemas de contingencias: el agente no conoce con exactitud en que estado se encuentra, pero si el resultado de cada una de sus acciones, aunque se le pueden presentar ciertas contingencias en las mismas.
- Problemas de exploración: el agente no conoce con exactitud en que estado se encuentra, ni el resultado exacto de cada una de sus acciones.
Problemas
Definición: Es un conjunto de información que el agente utiliza para decidir lo que va a hacer.
Un problema esta compuesto por:
Eficiencia para resolver problemas
Hay tres formas para medir la eficiencia de la búsqueda:
Elección de estados y acciones
Búsqueda de soluciones
Árboles de búsqueda
Componentes en la estructura de datos para los árboles de búsqueda:
Las estrategias de búsqueda se evalúan según los siguientes criterios:
Las estrategias de búsqueda se pueden agrupar en dos grandes grupos:
Búsquedas sin contar con información
Las seis estrategias de búsqueda sin contar con información son las siguientes:
Definición: Es un conjunto de información que el agente utiliza para decidir lo que va a hacer.
Un problema esta compuesto por:
- Un estado inicial que es donde se encuentra el agente.
- Un conjunto de acciones que le agente puede emprender.
- La prueba de meta para saber si alcanzo un estado meta.
- La función costo de ruta que le asigna un valor a una ruta determinada.
Eficiencia para resolver problemas
Hay tres formas para medir la eficiencia de la búsqueda:
- Según permita o no alcanzar la solución,
- Según su costo de ruta
- Según el costo de tiempo y memoria para alcanzar la solución
Elección de estados y acciones
Los estados y acciones se eligen mediante un proceso de abstracción (eliminación de detalles de una representación).
Para escoger una buena abstracción hay que eliminar todos los detalles
que sea posible siempre y cuando se conserve la validez y se garantice
que es fácil emprender las acciones abstractas.
Búsqueda de soluciones
La búsqueda consiste en escoger una opción,
haciendo a un lado las demás para considerarlas posteriormente en caso
de no obtener respuesta alguna mediante la primera opción.
La búsqueda termina cuando se encuentra una solución o cuando no hay mas estados que expandir.
Árboles de búsqueda
Componentes en la estructura de datos para los árboles de búsqueda:
El estado al que corresponda el nodo,Estrategia de búsqueda
El nodo padre,
El operador que se aplico para generar el nodo,
La profundidad del nodo (distancia hasta la raíz),
El costo de ruta desde el estado inicial hasta el nodo.
Las estrategias de búsqueda se evalúan según los siguientes criterios:
- Completez: si garantiza o no encontrar la solución si es que existe.
- Complejidad temporal: cantidad de tiempo necesario para encontrar la solución
- Complejidad espacial: cantidad de memoria necesaria para encontrar la solución.
- Optimidad: si se encontrará o no la mejor solución en caso de que existan varias.
Las estrategias de búsqueda se pueden agrupar en dos grandes grupos:
- Búsquedas sin contar con información (o búsqueda ciega): no existe información acerca de la cantidad de pasos necesarios o sobre el costo de ruta para pasar del estado de un momento dado a la meta.
- Búsqueda respaldada con información (o búsqueda heurística): se posee información muy valiosa para orientar la búsqueda para que sea mas óptima.
Búsquedas sin contar con información
Las seis estrategias de búsqueda sin contar con información son las siguientes:
• Búsqueda preferente por amplitudBúsqueda preferente por amplitud:
• Búsqueda de costo uniforme
• Búsqueda preferente por profundidad
• Búsqueda limitada por profundidad
• Búsqueda por profundización iterativa
• Búsqueda direccional
En esta búsqueda todos los nodos que están en la profundidad d del
árbol de búsqueda se expanden antes de los nodos que estén en la
profundidad d+1.
• Si son varias las soluciones, este tipo de búsqueda permitirá siempre encontrar primero el estado meta más próximo a la raíz.Búsquedas de costo uniforme:
• En esta búsqueda el tiempo y la cantidad de memoria necesaria crece exponencialmente con respecto a la profundidad.
• Es óptima y completa.
En esta búsqueda se modifica la estrategia preferente por amplitud en
el sentido de expandir siempre el nodo de menor costo en el margen
(medido por el costo de la ruta g(n)) en vez del nodo de menor
profundidad.
Este tipo de búsqueda permitirá siempre encontrar
la solución mas barata siempre y cuando el costo de ruta nunca
disminuya conforme avanzamos por la ruta.
En esta búsqueda el tiempo y la cantidad de memoria
necesaria crece exponencialmente con respecto a la profundidad.
Búsqueda limitada por profundidad:
Búsqueda por profundización iterativa:
Esta búsqueda es similar a la búsqueda limitada por profundidad con la diferencia que se repiten las búsquedas dando en cada iteración un valor distinto de profundiad para la misma.
• Es óptima y completa.Búsqueda preferente por profundidad:
En esta búsqueda siempre se expande uno de los nodos que se encuentren
en los mas profundo del árbol. Solo si la búsqueda conduce a un
callejón sin salida, ser revierte la búsqueda y se expanden los nodos
de niveles menos profundos.
Esta búsqueda o se queda atorada en un bucle
infinito y nunca es posible regresar al encuentro de una solución, o a
la larga encontrará una ruta de solución mas larga que la solución
óptima.
• En esta búsqueda el tiempo necesario crece exponencialmente con respecto a la profundidad, mientras que el espacio requerido en memoria lo hace en forma lineal
• No es óptima ni completa.
Búsqueda limitada por profundidad:
Esta búsqueda es similar a la búsqueda preferente por profundidad con
la diferencia que se impone un límite a la profundidad máxima de una
ruta.
Se utilizan operadores que informan constantemente de la profundad del nodo.
• En esta búsqueda el tiempo necesario crece exponencialmente con respecto a la profundidad, mientras que el espacio requerido en memoria lo hace en forma lineal
• No es óptima, pero si completa cuando la profundidad del límite es menor o igual a la profundidad de la solución.
Búsqueda por profundización iterativa:
Esta búsqueda es similar a la búsqueda limitada por profundidad con la diferencia que se repiten las búsquedas dando en cada iteración un valor distinto de profundiad para la misma.
- En esta búsqueda el tiempo necesario crece exponencialmente con respecto a la profundidad, mientras que el espacio requerido en memoria lo hace en forma lineal
- Es óptima y completa.
- Esta es una búsqueda que avanza a partir del estado inicial y que retrocede a partir de la meta y que se detiene cuando ambas búsquedas se encuentran en algún punto intermedio.
- En esta búsqueda el tiempo y el espacio requerido en memoria crecen exponencialmente con respecto a la mitad de la profundidad (bd/2).
- Es óptima y completa.
Comparación entre las diferentes estrategias de búsqueda:
Búsqueda heurística
Introducción
En Inteligencia Artificial (IA) se emplea el calificativo heurístico,
en un sentido muy genérico, para aplicarlo a todos aquellos aspectos
que tienen que ver con el empleo de conocimiento en la realización
dinámica de tareas.
Se habla de heurística para referirse a una
técnica, método o procedimiento inteligente de realizar una tarea que
no es producto de un riguroso análisis formal, sino de conocimiento
experto sobre la tarea. En especial, se usa el término heurístico para
referirse a un procedimiento que trata de aportar soluciones a un
problema con un buen rendimiento, en lo referente a la calidad de las
soluciones y a los recursos empleados.
En la resolución de problemas específicos han surgido procedimientos
heurísticos exitosos, de los que se ha tratado de extraer lo que es
esencial en su éxito para aplicarlo a otros problemas o en contextos
más extensos.
Esta búsqueda también es conocida como búsqueda respaldada con información que puede dividir en los siguientes tipos de búsqueda:
• Búsqueda preferente por lo mejor.
• Búsqueda limitada por la capacidad de la memoria.
• Búsquedas de mejoramiento iterativo.Búsqueda preferente por lo mejor:
Esta búsqueda consiste en expandir primero aquél
nodo con mejor evaluación. Dicha evaluación es el resultado de aplicar
la función de evaluación al nodo, la cual devuelve un número que sirve para representar lo deseable que sería la expansión de un nodo.
Dentro de este tipo de búsqueda se encuentran:
• Búsqueda avara.
• Búsqueda A*.
Búsqueda avara:
Consiste en reducir al mínimo el costo estimado para alcanzar una meta.
Para ello se utiliza una función llamada heurística,
la cual estima el costo que implica llegar a una meta desde un estado
determinado, y elige cual es el siguiente nodo que se va a expandir
aplicando esta función a cada nodo.
- En esta búsqueda el tiempo y la cantidad de memoria necesaria crece exponencialmente con respecto a la profundidad. Pero la elección de una buena función heurística permite disminuir notablemente la complejidad tanto en tiempo como en espacio.
- No es óptima ni completa.
Búsqueda A*:
Esta búsqueda es una búsqueda preferente por lo mejor en la que se utiliza f como función de evaluación.
La función f calcula el costo estimado de la solución más barata, pasando por n y se calcula de la siguiente manera:
Siendo g(n) el costo de ruta y h(n) una heurística admisible (que nunca sobreestima el costo que implica alcanzar la meta).f=g(n) + h(n)
- En esta búsqueda la cantidad de memoria necesaria crece exponencialmente con respecto a la profundidad. Pero la elección de una buena función heurística permite disminuir notablemente la complejidad tanto en tiempo como en espacio.
- Es óptima y completa.
Búsqueda limitada por la capacidad de la memoria:
Cuando se implementan las búsquedas vistas hasta el momento, hay
ciertos problemas muy difíciles de resolver y por lo tanto siempre hay
que dar algo a cambio para resolverlos, y lo primero que se cede es la
memoria disponible.
Para poder conservar la memoria existen:
- La búsqueda A* por profundización iterativa
- La búsqueda A* acotada por memoria simplificada.
Búsqueda A* por profundización iterativa (A*PI):
En este algoritmo, cada iteración es una búsqueda
preferente por profundidad, la cual se modifica para utilizar un límite
de costo f en vez de un límite de profundidad.
- En esta búsqueda el espacio requerido en memoria crece en forma lineal con respecto a la profundidad, mientras que la complejidad temporal depende de la cantidad de distintos valores que adopte la función heurística.
- Es óptima y completa.
Búsqueda A* acotada por memoria simplificada (A*SRM):
Tiene las siguientes características:
- Hace uso de toda la memoria que puede disponer
- En la medida que se lo facilite la memoria, evitará los estados repetidos
- Es completa si la memoria disponible tiene capacidad suficiente para guardar la ruta de solución más cercana
- Es óptima si dispone de suficiente memoria para guardar la ruta de solución óptima más cercana. De lo contrario produce la mejor solución que sea posible obtener con la memoria disponible.
Búsqueda de mejoramiento iterativo:
La idea básica de los algoritmos de estos tipos de búsqueda consiste en
empezar con una configuración completa y efectuar modificaciones para
mejorar su calidad.
Entre estas búsquedas se pueden encontrar:
- Búsqueda por ascenso de cima.
- Búsqueda con endurecimiento simulado.
Búsqueda por ascenso de cima:
Esta búsqueda se trata de un bucle que
constantemente se desplaza en la dirección de un valor ascendente. Como
el algoritmo no mantiene un árbol de búsqueda, la estructura de datos
del nodo sólo tiene que registrar el estado y su evaluación, denominado
VALOR.
Cuando el algoritmo llega a un punto mas allá del
cual no se logra ningún avance, es obvio que debe empezarse de nuevo en
otro punto.
Búsqueda por endurecimiento simulado:
Esta búsqueda es muy similar a la búsqueda por
ascenso a la cima, pero con la diferencia de que en vez de empezar otra
vez al azar luego de quedarse atorado en un máximo local, sería
conveniente descender unos cuantos pasos y así escapar del máximo local
en cuestión.