Sistemas Expertos e Inteligencia Artificial. Guía No. 5 1 Tema: Búsqueda Heurística (Informada). Facultad: Ingeniería Escuela: Computación Asignatura: Sistemas Expertos e Inteligencia Artificial Objetivos Específicos Comprender el concepto de Búsqueda Heurística en la Inteligencia Artificial. Comprender la importancia de la búsqueda heurística en la implementación de sistemas inteligentes. Implementar agentes que utilicen métodos de búsqueda informada utilizando Windows Forms de Microsoft Visual C#. Materiales y Equipo Guía Número 5. Computadora con programa Microsoft Visual C#. Introducción Teórica Cuando se quiere resolver un problema con Inteligencia Artificial, debemos considerar: Si se tiene conocimiento perfecto algoritmo exacto Si no se tiene conocimiento búsqueda sin información En la mayor parte de los problemas que resuelven los humanos, se está en posiciones intermedias. Los métodos de búsqueda heurística disponen de alguna información sobre la proximidad de cada estado a un estado objetivo, lo que permite explorar en primer lugar los caminos más prometedores. En general, los métodos heurísticos son preferibles a los métodos no informados en la solución de problemas difíciles para los que una búsqueda exhaustiva necesitaría un tiempo demasiado grande. Esto cubre prácticamente la totalidad de los problemas reales que interesan en Inteligencia Artificial. Los métodos de búsqueda heurística usan alguna estrategia para controlar o guiar la búsqueda.
2 Sistemas Expertos e Inteligencia Artificial. Guía No. 5 La información del problema concreto que estamos intentando resolver se suele expresar por medio de heurísticas. Heurística. Del griego heurisko : yo encuentro", conocimiento parcial sobre un problema/dominio que permite resolver problemas eficientemente en ese problema/dominio. Las heurísticas son criterios, métodos o principios para decidir cuál de entre varias acciones promete ser la mejor para alcanzar una determinada meta. El concepto de heurística es difícil de aprehender. Newell, Shaw y Simon en 1963 dieron la siguiente definición: "Un proceso que puede resolver un problema dado, pero que no ofrece ninguna garantía de que lo hará, se llama una heurística para ese problema". Las heurísticas son formalizadas como reglas para elegir (buscar) las ramas en el espacio de estados que son más probables de llegar a una solución aceptable de problema. En Inteligencia Artificial, se emplean heurísticas en dos casos: Un problema puede no contar con solución exacta debido a ambigüedades inherentes en el problema o datos disponibles. o Diagnóstico médico. o Visión. Un problema puede tener solución exacta, pero el costo computacional por encontrarla puede ser prohibitivo. o Problema del agente viajero o Problema de coloración o Juego de ajedrez. Para qué son utilizadas las heurísticas? Para ordenar la búsqueda (búsqueda plausible) ver primero los nodos más prometedores Para controlar el ancho de la búsqueda, probar más en profundidad que a lo ancho Atacan la complejidad guiando la búsqueda por los caminos más prometedores en el espacio de búsqueda. Eliminan estados no prometedores y sus descendientes. Encuentran soluciones aceptables. Desafortunadamente las reglas son falibles, pues usan información limitada.
Sistemas Expertos e Inteligencia Artificial. Guía No. 5 3 El uso de heurísticas nos permite convertir nuestra búsqueda de una solución en un proceso guiado de ensayo y error. En problemas medianamente complejos, no obstante, tendremos que utilizar algún tipo de información para guiar nuestra búsqueda; por ejemplo: para generar el grafo completo del juego del ajedrez (10 47 estados), generando 3 billones de nodos por segundo y sin restricciones de memoria, tardaríamos unos 10 30 años en resolver el problema, 10 20 veces la edad estimada del universo! Se pueden distinguir dos casos básicos: Información incluida en la descripción del propio conocimiento que tenemos del problema. Ejemplo: Uso de prioridades en los Sistemas Expertos Basados en Reglas. Información especificada aparte de la descripción del conocimiento. Ejemplo: Uso de una función heurística que evalúa la bondad de un estado del sistema: o F (estado) R Tipos de Heurística. Dirigidas por las metas conociendo que es lo que se quiere alcanzar. Dirigidas por el conocimiento usando conocimiento específico del dominio para reducir la búsqueda. Representación de las heurísticas funciones h (n). metareglas. Las funciones heurísticas se descubren resolviendo modelos simplificados del problema real. Los juegos simples son medios ideales para explorar el diseño y comportamiento de algoritmos de búsqueda heurística debido a que El espacio de búsqueda es suficientemente grande que requiere poca heurística. Son suficientemente complejas para sugerir una amplia variedad de evaluaciones heurísticas. Generalmente admiten representaciones sencillas. Cada nodo del espacio de estados tiene una representación común, una heurística puede aplicarse a través del espacio de estados.
4 Sistemas Expertos e Inteligencia Artificial. Guía No. 5 Si nos planteamos seguir concretando como aprovechar la información sobre el problema en sistemas de producción, la siguiente idea consiste en concentrar toda la información heurística en una única función que se denomina función de evaluación heurística. Se trata de una función que asocia a cada estado del espacio de estados una cierta cantidad numérica que evalúa de algún modo lo prometedor que es ese estado para acceder a un estado objetivo. Habitualmente, se denota esa función por h (e). El objetivo de los métodos de búsqueda heurística es reducir el número de estados a generar durante la búsqueda. Utilizan en su estrategia de control las funciones de evaluación heurística, que llamaremos fev. Estas son una aplicación del conjunto de todos los estados posibles en f: {estados} tal que f (estado j) = n j De esto se deduce que el valor de esta función depende exclusivamente del estado que se está evaluando en un instante dado, es decir, para ese estado, el valor es función de la información disponible hasta ese momento sobre la búsqueda. Por regla general, el sistema inteligente almacenará esta información, refinándola mediante el aprendizaje. Este valor numérico lo que hace es una estimación de lo bueno que puede ser este estado para llegar a la meta. Esta estimación, que suele ser de coste pero que también puede ser de otro parámetro, cumple dos condiciones: El valor mínimo (máximo) de esta función se ha de dar cuando se llega a la meta. Se pretende que el valor calculado por esta función sea óptimo durante todo el camino. En este caso se dice que la fev es óptima, y por tanto nos va a dar la mejor solución (la óptima): la búsqueda sería la simple ejecución de una secuencia de operadores. En un caso real no sabemos cuál es el camino óptimo (de ahí la búsqueda) y lo que se hace es buscar, a lo largo del camino, el valor que más se acerque a este valor óptimo. La función heurística puede tener dos interpretaciones. Por una parte, la función puede ser una estimación de lo próximo que se encuentra el estado de un estado objetivo. Bajo esta perspectiva, los estados de menor valor heurístico son los preferidos. Pero en otros casos puede suceder que lo que convenga sea maximizar esa función. Un detalle que hay que tener en cuenta es que la fev, aunque utilice el conocimiento del dominio para el cálculo de su valor, forma parte del solucionador y por tanto forma parte de las tareas de búsqueda;
Sistemas Expertos e Inteligencia Artificial. Guía No. 5 5 estas son, recordemos, las que usan los métodos de resolución para definir las tareas genéricas (no dependientes del dominio). Encontrar una fev óptima podría ser fácil si no fuese por un detalle: su cálculo también tiene un coste asociado: puede darse el caso de que el coste del algoritmo con esa fev óptima sea mayor que el coste del algoritmo sin ella. Así pues, volvemos a encontrarnos en una situación en la que debemos llegar al compromiso entre el coste del algoritmo con fev y el coste sin ella. Para identificar una fev, lo que hacemos es identificar todas las restricciones que ha de cumplir el problema. Luego simplificamos el modelo, es decir, relajamos estas restricciones (quitamos una o varias), de manera que se convierte en el mismo problema, pero menos estricto (subproblema más sencillo). Con esto lo que conseguimos es que la fev sea más simple, pero lo suficientemente útil para que nos estime lo bueno que sea el estado para llegar a la meta en función de las restantes restricciones. Para poder simplificar el modelo, el problema ha de poderse descomponer en subproblemas más sencillos. Dado un problema, el valor calculado por una fev, que estima lo bueno que es el estado para llegar a la meta teniendo en cuenta todas las restricciones, va a ser mejor que el calculado por todas las fev que estimen lo mismo, pero cumpliendo solo algunas de estas restricciones. Cuanto más simple sea el modelo relajado, menor coste tendrá la fev, ya que esta es más simple, pero, en contrapartida, también dirigirá peor la búsqueda. Una fev que solo mida un parámetro del problema, además de ser demasiado simple para estimar la distancia a la meta, también puede producir otros problemas: Máximos (mínimos) locales. Es un estado que es el estimado como mejor que todos los que le rodean, pero que se estima peor que alguno que está más alejado. Altiplanicies o mesetas. Son un conjunto de estados que tienen el mismo valor de fev, por lo que no se tiene información de por dónde seguir. Estos inconvenientes se pueden solventar, aunque no definitivamente, con fev s que midan más de un parámetro y eligiendo adecuadamente el método de búsqueda. La búsqueda heurística consiste en añadir información, basándose en el espacio estudiado hasta ese momento, de formar que se restringe drásticamente esa búsqueda.
6 Sistemas Expertos e Inteligencia Artificial. Guía No. 5 La clave para el enfoque de IA es búsqueda inteligente y emparejamiento de estados. Entre menos estados se generen, mejor es el algoritmo utilizado para llegar al estado meta. Algoritmos de búsqueda heurística (o informada). Son métodos que asemejan al primero en anchura, aunque no explora el árbol de búsqueda de forma uniforme, ya que primero intenta examinar aquellos nodos que, de acuerdo con cierta información heurística especifica del problema, están situados en el mejor camino hacia el objetivo. Las estrategias de búsqueda informada saben si un estado no objetivo es más prometedor que otro. Utilizan una estimación del coste de la solución para guiar la búsqueda. No siempre garantizan el óptimo, ni una solución. Ejemplos: Primero el mejor. Búsqueda en escalada (Hill Climbing). Búsqueda en Haz. A* (Minimizar costo estimado total de la solución) A*PI (Búsqueda de Profundidad Iterativa) Son características de los métodos heurísticos: No garantizan que se encuentre una solución, aunque existan soluciones. Si encuentran una solución, no se asegura que ésta tenga las mejores propiedades (que sea de longitud mínima o de coste óptimo). En algunas ocasiones (que, en general, no se podrán determinar a priori), encontrarán una solución (aceptablemente buena) en un tiempo razonable. Procedimiento Ejemplo 1. En esta sesión de laboratorio simularemos el funcionamiento del agente de búsqueda en juegos sin adversario: el problema del juego 8 puzzle implementado en la guía anterior, pero ahora se utilizará un algoritmo de búsqueda heurística. Volvamos a recordar de qué trata el problema. 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,
Sistemas Expertos e Inteligencia Artificial. Guía No. 5 7 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). Estado inicial Estado objetivo 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. Para resolverlo con un método de búsqueda informada, necesitamos definir la o las heurísticas que podemos utilizar. En este caso analizaremos dos funciones heurísticas. Heurística Fichas mal colocadas. Número de casillas mal colocadas. Esta función puede considerarse un límite inferior del coste óptimo ya que como mínimo tendremos que desplazar las fichas mal colocadas hasta su posición original, y en el mejor caso estarán desplazadas una posición de la meta. Expresión matemática. Sean p i. j la ficha que ocupa la fila i, columna j de la matriz P que representa el estado actual n y q k, s la misma ficha en la matriz Q que representa al estado meta. Entonces la heurística Fichas mal colocadas" para una configuración dada del 8-puzzle se define como: Donde i, j no es la posición correspondiente al hueco, k, s y S i, j se define como: Observe que la ficha espacio blanco no se toma en cuenta.
8 Sistemas Expertos e Inteligencia Artificial. Guía No. 5 Esta heurística se obtiene relajando restricciones del problema original suponiendo que se puede mover una pieza del puzzle A a su posición destino en un solo movimiento". Por tanto, la función de coste en este problema relajado es el número de piezas que se encuentran descolocadas". Dicha función de coste se utiliza como heurística admisible en el problema original. Esta heurística tiene en cuenta, en esencia, el número mínimo de movimientos necesarios para solucionar el problema, que es igual a contar cuántas piezas están fuera de su posición habitual. Por tanto, simplifica el problema original al máximo. Dado que hemos generado la heurística relajando restricciones del problema original (en concreto la posibilidad de desplazar las fichas en un solo movimiento a su posición destino), tenemos la seguridad de que la heurística no sobreestimará. Parece razonable que impidiendo a una ficha desplazarse más de una posición en cada movimiento siempre y cuando exista un espacio vacío contiguo, el número de movimientos necesarios para colocarla, y por extensión la totalidad de las piezas, se incrementará notablemente respecto al problema relajado. Es decir, Donde h* (n) es la función que devuelve el coste óptimo a la meta. Es una heurística que no usa la información relativa al esfuerzo (número de movimientos) necesario para llevar una pieza a su lugar. A continuación vemos un ejemplo de aplicación de esta heurística: Heurística Manhattan. Esta heurística se define como la suma de las distancias de Manhattan de todas las fichas que forman un estado concreto del tablero. Es decir, la distancia de cada ficha a su posición original sumando filas y columnas. Esta función puede considerarse un límite inferior del coste óptimo ya
Sistemas Expertos e Inteligencia Artificial. Guía No. 5 9 que aunque tendremos que desplazar las fichas mal colocadas hasta su posición original, en realidad tendremos que realizar más movimientos. Expresión matemática. Sean p i, j la ficha que ocupa la fila i, columna j de la matriz P que representa el estado actual n y q k, s la misma ficha en la matriz Q que representa al estado meta. Entonces la heurística distancia Manhattan para una configuración dada del 8-puzzle se define como: Donde d (p i, j, q k, s) se define como: Observe que no se calcula ninguna distancia para la ficha espacio blanco. Esta heurística se obtiene relajando restricciones del problema original suponiendo que se puede mover una pieza de A a B, si A es adyacente a B. La función de coste en este problema relajado es la suma de movimientos que restan a cada ficha de A para alcanzar la posición destino en B. Dicha función de coste se utiliza como heurística admisible en el problema original. Dado que hemos generado la heurística relajando restricciones del problema original (en concreto la posibilidad de desplazar fichas aun cuando no haya un espacio adyacente), tenemos la seguridad de que la heurística no sobreestimará. Parece razonable que impidiendo a una ficha desplazarse si no hay un espacio vacío contiguo el número de movimientos necesarios para colocar la totalidad de las piezas se incrementará respecto al problema relajado. Es decir, Donde h* (n) es la función que devuelve el coste óptimo a la meta. Aparición de mínimos locales. Un espacio de estados contiene un mínimo local si la heurística proporciona un valor menor (mejor) para un estado que para otro que se encuentra en realidad más cerca de la meta. Esta situación ocurre cuando existen piezas ya colocadas en su situación final y el resto están intercambiadas en su fila (o columna) destino.
10 Sistemas Expertos e Inteligencia Artificial. Guía No. 5 Supongamos que ocurre con dos piezas: claramente el intercambio no podría hacerse en sólo dos movimientos, sino que como mínimo son necesarios 4. Para ello una de las piezas tiene que dejar su posición, para que la otra se mueva a su posición destino. Pero todavía queda una distancia mínima de 2 para que la primera se coloque en su posición final. La figura siguiente ilustra esta idea (fichas x e y intercambiando sus posiciones): A continuación vemos un ejemplo de aplicación de esta heurística: Los números que aparecen en la esquina superior izquierda en cada pieza indican el valor de heurística Manhattan. En el primer caso se obtiene un valor de heurística de 4 siendo el coste óptimo de solución 14. En el segundo caso, se obtiene un valor de 7 en la heurística (por tanto, peor estado que el previo) pero el coste de alcanzar la solución se reduce en una unidad a 13. Para resolver el problema del puzzle utilizaremos el algoritmo de búsqueda informada A*. Algoritmo de Búsqueda A*. Es un algoritmo computacional clasificado dentro de la búsqueda por grafos, para encontrar el camino de menor coste entre el nodo origen y destino. Está motivado debido a que en algoritmos de búsqueda en grafos informados, como el algoritmo voraz, estos siguen un camino basado únicamente en la función heurística. Dicha función no nos indica el coste real de desplazarse de un nodo a otro, sino una aproximación que puede no ser óptima, llevando a realizar movimientos extra que terminan derivando en un mayor coste para alcanzar la solución. Por ello un algoritmo óptimo de búsqueda informada deberá tener en cuenta el factor del valor heurístico de los nodos, y el coste real del recorrido. Por ello el algoritmo A* usa la siguiente función heurística de evaluación f (n) = g (n) + h' (n)
Sistemas Expertos e Inteligencia Artificial. Guía No. 5 11 Siendo el primer término g (n) el coste real del camino recorrido para llegar al nodo n, y h (n) el valor heurístico del nodo a evaluar desde el actual n hasta el final. Además A* necesita de dos estructuras de datos auxiliares, para mantener un conjunto de soluciones parciales almacenadas: Abiertos: nodos que se han generado y a los que se les ha aplicado la función heurística, pero que aún no han sido examinados, es decir, no se han generado sus sucesores. Se trata de una cola de prioridad ordenada según el valor f(n) de cada nodo. Cerrados: información de los nodos ya visitados. Es necesaria para ver si cuando se genera un nuevo nodo ya ha sido generado con anterioridad. En cada iteración del algoritmo se realiza una consulta de la estructura de Abiertos, se consulta el primer nodo de la lista ordenada, si no se trata de un nodo objetivo, se calcula la f(n) de todos sus hijos, se insertan en la cola de Abiertos, y finalmente el nodo evaluado se traspasa a la estructura de Cerrados. Se trata de un algoritmo de búsquedas de tipo primero en anchura para g(n) con primero en profundidad para h (n). Esto quiere decir que: Para g(n) se establece un nodo raíz, y se exploran y evalúan todos los vecinos de este nodo, y a continuación para cada uno de los vecinos se exploraran sus correspondientes vecinos adyacentes, y se realiza esto hasta que hayamos explorado todo el árbol. Para h (n) el modo de exploración es diferente, en la búsqueda en profundidad partimos de un nodo que vamos expandiendo de manera recurrente para un camino determinado, en el momento que ese camino no se puede propagar más, volvemos atrás y comenzamos de nuevo a expandir el nodo vecino del cual partimos y que ya ha sido procesado. Es un algoritmo que nos permite recorrer todo el árbol de manera ordenada pero no uniforme. Las propiedades del algoritmo son las siguientes: Es un algoritmo completo, en caso de existir solución la encontrará. El algoritmo no desarrolla un camino por interacción, formula varios y selecciona los más competentes. Para garantizar que se trata de un algoritmo óptimo, la función h(n) deberá ser válida, sin exagerar el valor real de encontrar la solución. SI h (n) realiza una estimación exacta de h(n), el algoritmo converge rápidamente a la solución.
12 Sistemas Expertos e Inteligencia Artificial. Guía No. 5 Si h (x) = 0, la búsqueda es controlada por la función g(x). Si h (x) = g(x) = 0 se trata de una búsqueda aleatoria. Si h (x) = 0 y g(x) = 1, se trata de una búsqueda que se desarrolla primero en anchura. Si h(x) no se sobrestima por h (x), se encuentra un camino optimo pero se han buscado rutas alternativas que han conllevado un sobre cálculo desaprovechado. En caso contrario si h(x) se sobrestima por h (x), no se asegura que se avance por el camino de menor coste. Si para todos los nodos n del grafo se verifica que g(n) = 0 se trata de una búsqueda voraz. Si para todos los nodos n del grafo se verifica que h(n) = 0, se trata de una búsqueda de coste uniforme no informada. Pero en este algoritmo no todo son ventajas, existe un gran problema a la hora de ejecutar un algoritmo basado en A*, que es la gran cantidad necesaria de memoria. Esto es debido a que se debe almacenar todos los posibles siguientes nodos de cada estado, derivando por ello en una cantidad de memoria exponencial respecto al tamaño y complejidad del problema. El algoritmo A* es el siguiente: 1. Empezar con Abiertos conteniendo sólo el nodo inicial. Poner el valor g de ese nodo a 0, su valor h al que corresponda, y su valor f a h+0, es decir, a h. 2. Inicializar Cerrados como una lista vacía. 3. Hasta que se encuentre una meta o de devuelva fallo realizar las siguientes acciones: 3.1 Si Abiertos está vacía terminar con fallo; en caso contrario continuar. 3.2 Eliminar el nodo de Abiertos que tenga un valor mínimo de f; llamar a este nodo m e introducirlo en la lista cerrada. 3.3 Si m es meta, abandonar el proceso iterativo iniciado en 2 devolviendo el camino recorrido (punteros a sus antepasados). 3.4 En caso contrario expandir m generando todos sus sucesores. 3.5 Para cada sucesor n de m: 1) Crear un puntero de n a m. 2) Calcular g (n ) = g (m) + c (m, n ), tal que c (a, b) es el coste de pasar de a a b.
Sistemas Expertos e Inteligencia Artificial. Guía No. 5 13 3) Si n está en Abiertos llamar n al nodo encontrado en dicha lista, añadirlo a los sucesores de m y realizar el siguiente paso: 3.1) Si g (n ) < g (n), entonces redirigir el puntero de n a m y cambiar el camino de menor coste encontrado a n desde la raíz; g (n) = g (n ) y f (n) = g (n ) + h (n). 4. Si n no cumple paso 3, comprobar si está en Cerrados; llamar n al nodo encontrado en dicha lista y realizar las siguientes acciones: Si 3.1 no se cumple, abandonar paso 4; en caso contrario propagar el nuevo menor coste g (n ) (por lo que también actualizarán los valores de f correspondientes (que llamaremos n i tal que i = 1, 2,, siendo sus costes anteriores g(n i)), realizando un recorrido en profundidad de éstos, empezando en n y teniendo en cuenta las siguientes consideraciones: 4.1 Para los nodos descendientes n i cuyo puntero (que debe apuntar siempre al mejor predecesor hasta ese momento) conduzca hacia el nodo n i, actualizar g (n i) = g (n i ) y f(n i) = g (n i ) + h (n i) y seguir el recorrido hasta que se encuentre un n i que no tenga más sucesores calculados o se llegue a un nodo en que ya ocurra que g (n i) = g(n i ), en cuyo caso se habría producido un ciclo y también habría que terminar la propagación. 4.2 Para los nodos descendientes n i cuyo puntero no conduzca hacia el nodo n, comprobar si g (n i ) < g (n i), en cuyo caso se debe actualizar el puntero para que conduzca hacia el nodo n (mejor camino desde la raíz encontrado hasta ese momento) y se continúa el proceso de propagación. 5. Si n no está en Abiertos o en Cerrados, calcular h (n ) y f (n ) = g (n ) + h (n ), introducirlo en Abiertos y añadirlo a la lista de sucesores de m. Análisis de resultados Tomando como referencia la implementación realizada en la investigación complementaria de la guía de práctica No.4, se le dará más funcionalidad al simulador del agente de búsqueda. Agregar al menú las siguientes opciones:
14 Sistemas Expertos e Inteligencia Artificial. Guía No. 5 A. Permitir que el usuario decida con qué algoritmo de búsqueda desea usar el 8 -puzzle: Búsqueda No Informada. Búsqueda Informada (Algoritmo A*). B. Si se selecciona la opción Búsqueda Informada, debe preguntársele al usuario con que heurística desea implementar el Algoritmo A*: Heurística Fichas mal colocadas. Heurística Manhattan. Para este algoritmo, el simulador debe también tener una opción de solución automática, 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). Toda la funcionalidad implementada en investigación complementaria de la guía de laboratorio No. 4 se conserva, es decir: 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.
Sistemas Expertos e Inteligencia Artificial. Guía No. 5 15 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 o el método de búsqueda informada. Investigación Complementaria Para la siguiente semana: 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 poder generar dos tipos de puzles: 8-puzzle. 15-puzzle. Es decir, que debe agregarse toda la funcionalidad desarrollada para el puzzle de 8 fichas, para un puzzle de 15 fichas. Considerar la implementación del 15-puzzle para el siguiente estado objetivo: Estado Objetivo Para el estado inicial, se mantiene las consideraciones brindadas anteriormente: Que el usuario pueda definir es estado inicial. Estado inicial generado aleatoriamente. Considerar la solución con ambos algoritmos de búsqueda implementados: no informada e informada.
16 Sistemas Expertos e Inteligencia Artificial. Guía No. 5 Guía 5: Búsqueda Heurística (Informada). Hoja de cotejo: 5 Alumno: Máquina No: Docente: GL: Fecha: 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%