Métodos de Búsqueda IA

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. 

Clasificación

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.



Búsquedas en los espacios de estado
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:

  • 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,
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.
Estrategia de búsqueda

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.
Tipos de estrategias de búsqueda
 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 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
Búsqueda preferente por amplitud:

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.
• En esta búsqueda el tiempo y la cantidad de memoria necesaria crece exponencialmente con respecto a la profundidad.
• Es óptima y completa.
Búsquedas de costo uniforme:

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.

• 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. 
Búsqueda bidireccional:

  • 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:
f=g(n) + h(n)
Siendo g(n) el costo de ruta y h(n) una heurística admisible (que nunca sobreestima el costo que implica alcanzar la meta).

  • 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.