Upload
others
View
10
Download
0
Embed Size (px)
Citation preview
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
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: