Universidad Rey Juan Carlos Curso 2011/2012 Ingenierı́a Informática Fundamentos de Inteligencia Artificial Hoja 1 1. Uso de la librerı́a de búsqueda Java para la asignatura de Fundamentos de Inteligencia Artificial. En este ejercicio, el objetivo es que el alumno se familiarice con el uso de la librerı́a de referencia propuesta para realizar búsquedas en la asignatura de Fundamentos de la Inteligencia Artificial. Para ello, se procederá a descargar un código de ejemplo, se hará funcionar en un entorno de desarrollo Java (Eclipse) y se realizarán modificaciones sobre el código para utilizar distintos tipos de búsqueda y para comprobar distintos usos de módulos estadı́sticos. (a) Crear en un directorio local la estructura inicial del proyecto Java. Para ello, crear una carpeta con el nombre del proyecto (por ejemplo, hoja1 ) y crear los subdirectorios src y lib. (b) Descarga de la librerı́a de búsquedas: en la página web de la asignatura (http: //www.ia.urjc.es/grupo/docencia/fia) se encuentra disponible la librerı́a Java para la búsquedas. Descargar dicha librerı́a (fichero .jar ) en el directorio lib de la carpeta anteriormente creada. Enlace directo a la librerı́a: fia-urjc.jar (c) Descargar el código de ejemplo correspondiente a la hoja 1 de la página web de la asignatura (cifras-practicas.zip). Descomprimir el contenido del fichero descargado en la carpeta src del directorio inicialmente creado. (d) Crear un nuevo proyecto Java en Eclipse, cambiando la localización por defecto e indicando la carpeta creada para el proyecto inicialmente. Configurar el proyecto para que utilice como librerı́a el fichero fia-urjc.jar alojado en el directorio lib. (e) Ejecutar, en el proyecto creado, el programa principal NumbersMain. ¿Qué valores iniciales tiene el problema? ¿Qué tipo de búsqueda realiza? (f) Inicializar el módulo de estadı́sticas en modo texto (TextStatistics) y ejecutar de nuevo el programa principal. ¿Cuántos estados se expanden? ¿Qué información que aporta es relevante? ¿Se puede saber a qué profundidad se ha encontrado la solución? (g) Sustituir el módulo de estadı́sticas en modo texto por el módulo de estadı́sticas gráficas (JUNGStatistics). ¿Qué es la información gráfica que ofrece? Deja el puntero del ratón sobre uno de los elementos gráficos, ¿qué información adicional muestra? Utilizando la rueda central del ratón se puede cambiar el nivel de zoom de la visualización. (h) Cambiar el tipo de búsqueda y pasar a utilizar una búsqueda en anchura (BreadthSearch) Para ello será necesario realizar una instanciación similar a la usada para la búsqueda en profundidad, creando una nueva clase NumberBreadthSearch. ¿Se obtiene el mismo resultado que en la búsqueda anterior? ¿Por qué? (i) Utilizar alguno de los módulos estadı́sticos y analizar los resultados en función de los datos obtenidos en las dos búsquedas. ¿Diferencia en nodos visitados? ¿Profundidad de la solución? 1 (j) Cambiar los valores iniciales del problema con los siguientes valores: Números: 5 10 7 1 3 9 Resultado: 542 Probar con los dos tipos de búsqueda y analizar los resultados. ¿Hay diferencias en el tipo empleado para la ejecución? ¿Alguna estrategia resulta ser mejor que otra? (k) Cambiar los valores iniciales para obtener generar un problema que no tenga solución. ¿Qué resultado es el esperado? 2