Tema: Búsqueda a Ciegas (No Informada).€¦ · 1Sistemas Expertos e Inteligencia Artificial.Guía...

18
Sistemas Expertos e Inteligencia Artificial. Guía No. 4 1 Tema: Búsqueda a Ciegas (No Informada). Comprender el concepto de Búsqueda en la Inteligencia Artificial. Comprender cómo un agente puede encontrar una secuencia de acciones que le permita alcanzar sus objetivos, cuando ninguna acción simple lo hará. Identificar tipos de búsqueda utilizados en algoritmos de inteligencia artificial. Implementar agentes que utilicen métodos de búsqueda no informada utilizando Windows Forms de Microsoft Visual C#. Guía Número 4. Computadora con programa Microsoft Visual C#. Una aplicación que se les da a los agentes inteligentes es la de ser solucionadores de problemas. Para poder diseñar un agente resolvente de problemas deben considerarse ciertos criterios, los cuales mencionaremos a continuación. Lo que se requiere es resolver un problema de forma automática, a través de un agente. Para ello se necesita: Una representación del problema. Algoritmos que usen alguna estrategia para resolver el problema definido en esa representación. Definición del problema. Si se abstraen los elementos de un problema se pueden identificar los siguientes: Un punto de partida. Facultad: Ingeniería Escuela: Computación Asignatura: Sistemas Expertos e Inteligencia Artificial Objetivos Específicos Materiales y Equipo Introducción Teórica

Transcript of Tema: Búsqueda a Ciegas (No Informada).€¦ · 1Sistemas Expertos e Inteligencia Artificial.Guía...

Sistemas Expertos e Inteligencia Artificial. Guía No. 4

1

Tema: Búsqueda a Ciegas (No Informada).

Comprender el concepto de Búsqueda en la Inteligencia Artificial.

Comprender cómo un agente puede encontrar una secuencia de acciones que le permita

alcanzar sus objetivos, cuando ninguna acción simple lo hará.

Identificar tipos de búsqueda utilizados en algoritmos de inteligencia artificial.

Implementar agentes que utilicen métodos de búsqueda no informada utilizando Windows

Forms de Microsoft Visual C#.

Guía Número 4.

Computadora con programa Microsoft Visual C#.

Una aplicación que se les da a los agentes inteligentes es la de ser solucionadores de problemas.

Para poder diseñar un agente resolvente de problemas deben considerarse ciertos criterios, los cuales

mencionaremos a continuación.

Lo que se requiere es resolver un problema de forma automática, a través de un agente.

Para ello se necesita:

Una representación del problema.

Algoritmos que usen alguna estrategia para resolver el problema definido en esa

representación.

Definición del problema.

Si se abstraen los elementos de un problema se pueden identificar los siguientes:

Un punto de partida.

Facultad: Ingeniería Escuela: Computación Asignatura: Sistemas Expertos e

Inteligencia Artificial

Objetivos Específicos

Materiales y Equipo

Introducción Teórica

Sistemas Expertos e Inteligencia Artificial. Guía No. 4

2

Un objetivo a alcanzar.

Acciones a disposición para resolver el problema.

Restricciones sobre el objetivo (ejemplo: de costo).

Elementos del dominio que son relevantes en el problema (ejemplo: conocimiento incompleto

del punto de partida).

Para poder resolver el problema, debemos construir un modelo para basar nuestras decisiones en las

consecuencias (hipotéticas) de nuestras acciones.

En la imagen siguiente, observamos la descripción de un problema típico en Inteligencia Artificial:

Un agente simple resolvente de problemas, se puede implementar con el siguiente algoritmo:

Sistemas Expertos e Inteligencia Artificial. Guía No. 4

3

Solución de problemas con búsqueda.

La solución de problemas es fundamental para la mayoría de las aplicaciones de IA, existen

principalmente dos clases de problemas que se pueden resolver mediante procesos computables:

aquéllos en los que se utiliza un algoritmo determinista que garantiza la solución al problema y las

tareas complejas que se resuelven con la búsqueda de una solución; de ésta última clase de

problemas se ocupa la IA.

¿Qué es búsqueda?

La búsqueda es una técnica para resolver problemas cuya solución consiste en una serie de pasos

que frecuentemente deben determinarse mediante la prueba sistemática de las alternativas.

Desde los inicios de la Inteligencia Artificial, la búsqueda se ha aplicado en diversas clases de

problemas como juegos de dos jugadores, problemas de satisfacción de restricciones y problemas de

encontrar solución a través de agentes.

La solución de problemas requiere dos consideraciones:

Representación del problema en un espacio organizado.

La capacidad de probar la existencia del estado objetivo en dicho espacio.

Las anteriores premisas se traducen en: la determinación del estado objetivo y la determinación del

camino óptimo guiado por este objetivo a través de una o más transiciones dado un estado inicial.

El espacio de búsqueda, se le conoce como una colección de estados. En general los espacios de

búsqueda en los problemas de IA no son completamente conocidos de forma a priori.

De lo anterior, “resolver un problema de IA” cuenta con dos fases:

1. La generación del espacio de estados.

2. La búsqueda del estado deseado en ese espacio.

Debido a que “todo el espacio de búsqueda” de un problema es muy grande, puede causar un bloqueo

de memoria, dejando muy poco espacio para el proceso de búsqueda. Para solucionar esto, se

expande el espacio paso a paso, hasta encontrar el estado objetivo.

Muchos de los problemas que pueden ser resueltos aplicando técnicas de inteligencia artificial se

modelan en forma simbólica y discreta definiendo las configuraciones posibles del universo estudiado.

El problema se plantea entonces en términos de encontrar una configuración objetivo a partir de una

configuración inicial dada, aplicando transformaciones válidas según el modelo del universo. La

Sistemas Expertos e Inteligencia Artificial. Guía No. 4

4

respuesta es la secuencia de transformaciones cuya aplicación sucesiva lleva a la configuración

deseada.

Los ejemplos más característicos de esta categoría de problemas son los juegos (son universos

restringidos fáciles de modelar). En un juego, las configuraciones del universo corresponden

directamente a las configuraciones del tablero. Cada configuración es un estado que puede ser

esquematizado gráficamente y representado en forma simbólica. Las transformaciones permitidas

corresponden a las reglas o movidas del juego, formalizadas como transiciones de estado.

Entonces, para plantear formalmente un problema, se requiere precisar una representación simbólica

de los estados y definir reglas del tipo condición-acción para cada una de las transiciones válidas

dentro del universo modelado.

La acción de una regla indica como modificar el estado actual para generar un nuevo estado. La

condición impone restricciones sobre la aplicabilidad de la regla según el estado actual, el estado

generado o la historia completa del proceso de solución.

El espacio de estados de un juego es un grafo cuyos nodos representan las configuraciones

alcanzables (los estados válidos) y cuyos arcos explicitan las movidas posibles (las transiciones de

estado).

En principio, se puede construir cualquier espacio de estados partiendo del estado inicial, aplicando

cada una de las reglas para generar los sucesores inmediatos, y así sucesivamente con cada uno de

los nuevos estados generados (en la práctica, los espacios de estados suelen ser demasiado grandes

para explicitarlos por completo).

Cuando un problema se puede representar mediante un espacio de estados, la solución

computacional corresponde a encontrar un camino desde el estado inicial a un estado objetivo.

Con ello, podemos reescribir el algoritmo para el agente solucionador de problemas así:

1. estado inicial sensar/leer estado

2. meta seleccionar/leer meta

3. sucesor seleccionar/leer modelos de acción

4. problema (estado inicial, meta, sucesor)

5. solución búsqueda(problema)

6. ejecutar(solución)

Esto significa que el agente necesita realizar un proceso de búsqueda para encontrar la solución, por

lo tanto el problema a resolver por el agente se convierte en un problema de búsqueda.

Por ello es necesario la formulación de un problema de búsqueda:

Sistemas Expertos e Inteligencia Artificial. Guía No. 4

5

Ambientes del mundo real abstracción

Validez: ¿Se puede ejecutar la solución? ¿Contiene el espacio de estados la solución?

Utilidad: Es el problema abstracto más fácil que el problema del mundo real.

Esto es muy importante, pues sin abstracción, un agente se perdería en el mundo real.

Un problema de búsqueda en Inteligencia Artificial consta de:

Un espacio de estados. Es discreto. Cada estado es una representación abstracta del ambiente.

Representa todos los caminos que hay entre todos los estados posibles de un problema. El

espacio de estados forma un grafo (representación matemática de un problema de búsqueda) en

el cual los nodos son estados y los arcos son acciones. La solución del problema está dentro de

ese mapa.

Un conjunto de operadores (acciones, con costes), función sucesor. Es una representación

del problema a través de las posibles acciones del agente. Para poder moverse entre los

diferentes estados se necesita una función sucesor (función de transformación sobre la

representación de un estado que lo convierte en otro estado). Esta función define una relación

de accesibilidad entre estados.

Un estado inicial (punto de partida de la búsqueda). Se denomina estado a la representación

de los elementos que describen el problema en un momento dado. Se distinguen dos estados

especiales: el estado inicial (punto de partida, usualmente el estado actual) y el estado final (en

general, el objetivo del problema).

Una función objetivo. Comprueba si el estado actual corresponde a una solución del problema.

Usualmente es una condición, algunas veces la descripción de un estado.

También debe considerarse el costo del camino (número positivo), que usualmente es la suma de los

costos de cada paso.

Búsqueda en el espacio de estados.

Se define una representación del espacio de estados para poder implementar algoritmos que busquen

soluciones.

Sistemas Expertos e Inteligencia Artificial. Guía No. 4

6

La resolución de un problema con esta representación pasa por explorar el espacio de estados. Se

empieza del estado inicial y se evalúa cada paso hasta encontrar un estado final. En el caso peor se

exploran todos los posibles caminos entre el estado inicial del problema y el estado final.

La búsqueda la realiza un programa (o agente).

Para representar el espacio de estados pueden utilizarse las estructuras de datos: árboles y grafos.

El grafo es una representación matemática de un problema de búsqueda (nodos: estados; arcos:

operadores). Representa todas las posibles transformaciones del sistema aplicando todos los

operadores posibles recursivamente.

El espacio de búsqueda será un grafo dirigido en el que cada nodo representa un posible estado del

sistema. Dependiendo del problema, cada nodo incluirá una descripción completa del sistema, o bien

sólo las modificaciones necesarias para pasar de un nodo padre a su hijo.

Debido a la complejidad exponencial del grafo implícito, se irá generando, paso a paso, una porción

del grafo conforme avance el proceso de búsqueda. El grafo explícito es el subgrafo del grafo implícito

que se va generando durante el proceso de búsqueda de una secuencia de operadores que resuelva

nuestro problema (camino solución), usualmente, en forma de árbol, de ahí su nombre: Árbol de

Búsqueda. En la figura siguiente observamos la representación de este árbol:

Para la búsqueda básica se toman las siguientes suposiciones:

El ambiente es estático.

El ambiente es discretizable.

El ambiente es observable.

Las acciones son determinísticas.

En el árbol de búsqueda podemos distinguir:

Nodo raíz: Estado inicial.

Hijos de un nodo: Posibles sucesores (nodos correspondientes a estados resultantes de la

aplicación de un operador al nodo padre).

Sistemas Expertos e Inteligencia Artificial. Guía No. 4

7

Los nodos del árbol representan estados, pero corresponden a planes mediante los cuales se

alcanzan dichos estados.

Las diferentes políticas de orden de expansión y de inserción de los nodos generados en la estructura

determinan el tipo de búsqueda a utilizar.

Las condiciones de parada en el árbol de búsqueda son:

Se ha encontrado la solución.

Se ha acabado el tiempo disponible.

Se ha llegado a un nivel de profundidad determinado.

Según el tipo de problema, nos podemos encontrar con:

Agentes de búsqueda que devuelven un único operador, por ejemplo: Juegos con adversario

(como el ajedrez).

Agentes de búsqueda que devuelven una secuencia de operadores, por ejemplo: Juegos sin

adversario (como el 8-puzzle), Sistemas de planificación, Sistemas expertos (con

encadenamiento hacia adelante).

Sistemas Expertos e Inteligencia Artificial. Guía No. 4

8

Algoritmos de Búsqueda.

La idea básica de estos algoritmos es: fuera del mundo real, realizar exploración simulada del espacio

de estados generando sucesores de los estados ya explorados (también conocida como expansión

de los estados).

Un estado es una representación de una configuración física.

Un nodo es una estructura de datos que forma parte de un árbol de búsqueda e incluye: padres, hijos,

profundidad y costo del camino. Los estados carecen de esas cosas.

La función “Expandir” crea nuevos nodos, llenando los distintos campos y usando la función “sucesor”

del problema para crear los estados correspondientes.

Entonces el algoritmo de búsqueda cambia a:

Los algoritmos de búsqueda en general deben implementar dos tareas para la consecución del

objetivo final:

a. Permitir la transición de un estado a otro mediante operadores o acciones.

b. Controlar en cierto modo esos movimientos, porque habitualmente responden a decisiones

que se han ido tomando.

Sistemas Expertos e Inteligencia Artificial. Guía No. 4

9

La búsqueda aleatoria puede funcionar en algunos problemas, pero, en general, la búsqueda debe

ser organizada, debe realizarse en forma metódica para que sea más eficiente y tener control de la

misma.

Por eso, las tareas de búsqueda se clasifican en dos grandes grupos según sea la situación inicial o

el planteamiento del problema a resolver:

1. La búsqueda sistemática que no utiliza información sobre el problema para ayudarse en esa

búsqueda directa en el espacio de estados, es la llamada búsqueda a ciegas (no

informada), o fuerza bruta. Es decir, no hay caminos prioritarios hacia el objetivo final.

2. Los algoritmos que utilizan información sobre el problema, como el coste o la distancia al

estado final, se denominan heurísticos o búsqueda dirigida o respaldada con

información. La principal ventaja de éstos es que se puede seleccionar con más fundamento

cuál es el siguiente nodo que se debe expandir, lo que mejora la eficiencia de la búsqueda.

Para juzgar la eficiencia de una búsqueda, e incluso para determinar si se trata de una búsqueda a

ciegas o una búsqueda heurística, hay algunos conceptos que se deben considerar:

Coste de un arco. Indica el tiempo requerido para aplicar un operador a un estado en el

proceso de búsqueda (por defecto tiene el valor de 1).

Coste de un nodo. Medida del tiempo consumido en un nodo a lo largo del mejor camino

encontrado hasta un momento dado.

Factor de ramificación. Número medio de descendientes de un nodo o número medio de

operadores que pueden aplicarse a un estado.

Longitud de una trayectoria. Número de nodos generados en un camino, es decir, el número

de operadores aplicados en dicho camino.

Profundidad. Longitud del camino más corto desde el estado inicial a un nodo determinado.

La profundidad del nodo raíz es 0.

Búsqueda a Ciegas (Búsqueda no informada).

Sistemas Expertos e Inteligencia Artificial. Guía No. 4

10

Como se mencionó anteriormente, es la que no cuenta con información a priori que la dirija en su

secuencia de acciones para la consecución del objetivo final. Es decir, realiza una búsqueda

exhaustiva.

Sólo realizaremos una búsqueda a ciegas (blind search) cuando no exista información específica

sobre el problema que nos ayude a determinar cuál es el mejor operador que se debería aplicar

en cada momento o el mejor nodo por el que continuar la búsqueda.

Se pueden utilizar distintos criterios para explorar el espacio de búsqueda, por ejemplo: LIFO (en

profundidad) o FIFO (en anchura).

Las estrategias de búsqueda no informada sólo utilizan la información disponible en la definición del

problema. No tienen en cuenta el coste de la solución en la búsqueda. Su funcionamiento es

sistemático, siguen un orden de visitas y generación de nodo establecido por la estructura del espacio

de búsqueda.

Ejemplos:

Búsqueda primero en anchura.

Búsqueda primero en profundidad.

Búsqueda de profundidad limitada.

Búsqueda en profundidad iterativa.

Ejemplo 1. En esta sesión de laboratorio simularemos el funcionamiento de un agente de

búsqueda en juegos sin adversario: el problema del juego 8 puzzle en Microsoft Visual C#.

El tradicional juego del 8-puzzle consiste, en un tablero con 9 casillas, las cuales van enumeradas

del 1 al 8 más una casilla vacía. Dicha casilla vacía, es la que, con movimientos horizontales,

verticales, hacia la izquierda o derecha, debe ser desplazada e intercambiada con alguno de sus

vecinos, de manera que, dada una configuración inicial se llegue a una configuración final (meta).

Procedimiento

Sistemas Expertos e Inteligencia Artificial. Guía No. 4

11

Este problema, al tratar de ser resuelto computacionalmente representa un problema al que

debemos de tratar con sumo cuidado.

Aunque las reglas del juego sean sencillas de realizar (y evidentemente de programar) conlleva

una complejidad mayor al momento de obtener la solución, es por esta razón que resulta un

ejemplo clásico y muy didáctico para poner en práctica algoritmos de búsqueda que encuentren

la solución eficiente a una configuración de 8-puzzle.

Definimos el problema como un problema de búsqueda en Inteligencia Artificial:

A continuación se muestra el árbol de búsqueda para el ejemplo mostrado:

A continuación procederemos a diseñar el simulador para el agente de búsqueda del 8 puzzle.

Sistemas Expertos e Inteligencia Artificial. Guía No. 4

12

1. Crear un proyecto de tipo Windows Forms Application, se sugiere darle el nombre de “Agente

de Búsqueda”.

2. Diseñar el formulario de tal manera que luzca similar al mostrado en la figura:

El formulario está compuesto por 18 botones. Los del lado izquierdo (“Estado Inicial”) son los que

permitirán realizar la simulación para el juego manual del usuario. Los botones de lado derecho

no tienen mayor utilización más que la visual, pues indican el “Estado Objetivo”.

Se llevará un control de la cantidad de movimientos realizados en el juego.

3. Al dar clic a cualquiera de los botones, este se intercambiará con el botón “blanco”, si este se

encuentra cercano. Esto permitirá simular la animación del movimiento de las piezas del puzzle.

Para ello haremos uso de una función de nombre “Intercambio”. El código para realizar esto se

muestra a continuación.

Sistemas Expertos e Inteligencia Artificial. Guía No. 4

13

4. Al dar clic por ejemplo al botón de la esquina superior izquierda, se activaría el siguiente código:

5. Un proceso similar se realiza para los restantes ocho botones, como se indica en el código

mostrado a continuación:

Sistemas Expertos e Inteligencia Artificial. Guía No. 4

14

Sistemas Expertos e Inteligencia Artificial. Guía No. 4

15

A medida se vayan realizando movimientos de piezas en el puzzle, esto se indicará a través de

una etiqueta, como observamos en la imagen siguiente:

Sistemas Expertos e Inteligencia Artificial. Guía No. 4

16

La funcionalidad para verificar que se ha llegado al estado objetivo, la realizará el estudiante como

ejercicio.

El código propuesto es un ejemplo de cómo podría resolverse. Pero también puede elaborarse

de otra forma creativa que defina cada estudiante.

Tomando como referencia el código de ejemplo proporcionado, se les pide implementar un

simulador para el agente de búsqueda para el juego “8 puzzle” con la siguiente funcionalidad:

a) La aplicación debe permitir indicar al usuario el estado inicial, es decir, debe solicitarse al

usuario, los valores que contendrá cada una de las fichas antes de iniciar el juego. El estado

objetivo será:

b) Permitir que el usuario juegue, es decir, que pueda mover las piezas del puzzle. La aplicación

debe indicar al usuario cuando se ha logrado conseguir el estado objetivo.

c) El simulador debe tener una opción de solución automática, de tal manera que cuando se

seleccione esta opción, el simulador utilizará un algoritmo de búsqueda para encontrar la

solución correspondiente, o en su defecto indicar que no existe solución. Deberá mostrarse

los movimientos necesarios para llegar del “estado inicial” al “estado objetivo” (simulación).

Debe implementarse esta opción utilizando el método de búsqueda ciega “Recorrido en

Profundidad” o “Recorrido en Anchura”.

Para la siguiente semana:

Investigación Complementaria

Análisis de resultados

Sistemas Expertos e Inteligencia Artificial. Guía No. 4

17

Aplicar las modificaciones necesarias, para agregar mayor funcionalidad al programa simulador

del agente de búsqueda para el juego “8 puzzle”.

Deben implementarse las siguientes opciones:

a. El simulador debe tener la opción de generar el estado inicial de forma aleatoria.

b. El usuario debe decidir la forma en que se generará el estado inicial:

i. Introduciendo él los valores a cada pieza del puzzle.

ii. Generado en forma automática, sin intervención del usuario.

c. El usuario seleccionará el estado objetivo. La aplicación debe permitir la selección de uno

de tres “estados objetivo”, los cuales se muestran a continuación:

Es decir que el usuario debe seleccionar tanto el “estado inicial”, como el “estado objetivo”

al cual quiere llevar el puzzle.

d. Permitir que el usuario juegue, es decir, que pueda mover las piezas del puzzle. La

aplicación debe indicar al usuario cuando se ha logrado conseguir el estado objetivo.

e. El simulador debe tener una opción de solución automática, de tal manera que cuando se

seleccione esta opción, el simulador utilizará un algoritmo de búsqueda para encontrar la

solución correspondiente, o en su defecto indicar que no existe solución. Deberá

mostrarse los movimientos necesarios para llegar del “estado inicial” al “estado objetivo”

(simulación). Debe implementarse esta opción utilizando el método de búsqueda ciega

“Recorrido en Profundidad” o “Recorrido en Anchura”.

Sistemas Expertos e Inteligencia Artificial. Guía No. 4

18

EVALUACIÓN

% 1-4 5-7 8-10 Nota

CONOCIMIENTO

Del 20

al 30%

Conocimiento

deficiente

de los

fundamentos

teóricos

Conocimiento

y explicación

incompleta de

los

fundamentos

teóricos

Conocimiento

completo y

explicación

clara de los

fundamentos

teóricos

APLICACIÓN

DEL

CONOCIMIENTO

Del 40%

al 60%

ACTITUD

Del 15%

al 30%

No tiene

actitud

proactiva.

Actitud

propositiva y

con

propuestas no

aplicables al

contenido de

la guía.

Tiene actitud

proactiva y

sus propuestas

son concretas.

TOTAL 100%

Guía 4: Búsqueda a Ciegas (No

Informada).

Hoja de cotejo: 4

Máquina No: Alumno:

Docente: GL: Fecha: