Este documento describe la estructura de clases de un proyecto de código para implementar estrategias de búsqueda y resolver problemas. Incluye clases para representar estados, acciones y problemas de búsqueda, así como interfaces y clases para implementar estrategias de búsqueda informadas y no informadas. También incluye un ejemplo de implementación para resolver el problema de la aspiradora usando la estrategia de búsqueda 4.
0 calificaciones0% encontró este documento útil (0 votos)
15 vistas3 páginas
Este documento describe la estructura de clases de un proyecto de código para implementar estrategias de búsqueda y resolver problemas. Incluye clases para representar estados, acciones y problemas de búsqueda, así como interfaces y clases para implementar estrategias de búsqueda informadas y no informadas. También incluye un ejemplo de implementación para resolver el problema de la aspiradora usando la estrategia de búsqueda 4.
Este documento describe la estructura de clases de un proyecto de código para implementar estrategias de búsqueda y resolver problemas. Incluye clases para representar estados, acciones y problemas de búsqueda, así como interfaces y clases para implementar estrategias de búsqueda informadas y no informadas. También incluye un ejemplo de implementación para resolver el problema de la aspiradora usando la estrategia de búsqueda 4.
Este documento describe la estructura de clases de un proyecto de código para implementar estrategias de búsqueda y resolver problemas. Incluye clases para representar estados, acciones y problemas de búsqueda, así como interfaces y clases para implementar estrategias de búsqueda informadas y no informadas. También incluye un ejemplo de implementación para resolver el problema de la aspiradora usando la estrategia de búsqueda 4.
Descargue como PDF, TXT o lea en línea desde Scribd
Descargar como pdf o txt
Está en la página 1de 3
Grado en Ingeniería Informática
Sistemas inteligentes
Práctica 1: Estrategias de búsqueda
Curso 2023/2024
DOCUMENTACIÓN
El código del proyecto se suministra como proyecto de IntelliJ IDEA. En este
documento se describe cómo utilizarlo. También se describe la estructura de clases, que deberá ser respetada en las implementaciones que se hagan.
Aclaración: No es necesario utilizar IntelliJ IDEA como IDE.
• ¿Cómo lanzar el código de ejemplo?
a) Si no dispones de IntelliJ IDEA, descárgalo de la página https://www.jetbrains.com/es-es/idea/download/. La versión Community es gratuita, de libre descarga y perfectamente válida para este proyecto. b) Abre IntelliJ IDEA e importa el proyecto. Para ello, lanza IntelliJ IDEA y en la pantalla inicial selecciona “Import”. Te aparecerá una ventana en la que debes seleccionar el directorio en el que has descargado el código del proyecto. Una vez seleccionado, el proyecto se te abrirá en la pantalla principal de IntelliJ IDEA. c) Comprueba que puedes lanzar el código de ejemplo haciendo doble clic en el fichero “ejemplo/Main.java” desde la pantalla principal de IntelliJ IDEA. Se te mostrará el código de esa clase. Verás que hay un método “main”, a la izquierda del cual se mostrará un icono verde. Púlsalo y se lanzará la ejecución de ese método. En la parte inferior de la pantalla se mostrará la salida por consola de la ejecución. Deberías ver un listado de pasos que se corresponden con la ejecución que aparece representada en las transparencias del TGR2. d) Si necesitas más información sobre cómo utilizar IntelliJ IDEA, existen numerosos tutoriales en la página oficial: https://www.jetbrains.com/es- es/idea/resources/ • Descripción del diseño El proyecto que se suministra cuenta con las siguientes clases, que agruparemos atendiendo a su función, y que describimos a continuación: 1. Representación del problema: El código nos ofrece tres clases que sirven de esqueleto para representar el problema (ver TGR1). Para representar un problema dado, deberemos crear subclases de cada una de ellas (ver ejemplo). o Clase Estado: Define cómo se representa un estado para un problema dado. La clase estado es abstracta, por lo que no se pueden crear objetos de dicha clase directamente, sino que se deberá crear una subclase que herede de Estado y que implemente los métodos que requiere Estado. Será de esta subclase de la que podremos crear instancias (p.ej: ver clase EstadoAspiradora en ejemplo/ProblemaAspiradora.java y su uso en ejemplo/Main.java). o Clase Accion: Define una acción que se puede aplicar sobre un estado en un problema dado. La clase Accion también es abstracta, por lo que para crear objetos se deberán crear subclases que implementen los siguientes métodos: ▪ esAplicable(Estado es): Método que indica si una acción se puede aplicar a un estado pasado como parámetro. Sirve para codificar las precondiciones de dicha acción. ▪ aplicaA(Estado es): Este método devuelve el estado resultante de aplicar la acción sobre la que se llama al estado pasado como parámetro. Sirve para codificar el resultado de aplicar cada acción (modelo de transición). ▪ getCoste(): Devuelve el coste de la acción sobre la que se llama. o Clase ProblemaBusqueda: Esta clase completa la definición del problema de búsqueda estableciendo el estado inicial y el test de meta. Es una clase abstracta, por lo que para crear instancias se deben declarar subclases específicas para cada problema (ver ejemplo). Las subclases que heredan de ProblemaBusqueda suelen declarar, a su vez, subclases de Estado y Accion. Consta de los siguientes métodos: ▪ esMeta(Estado es): Implementa el test de meta. Indica si el estado pasado como parámetro puede considerarse una meta para el problema en cuestión. Es abstracta, por lo que debe darse una implementación específica para cada problema. ▪ acciones(Estado es): Devuelve la lista de acciones aplicables al estado pasado como parámetro. Es abstracta, por lo que debe darse una implementación específica para cada problema. ▪ result(Estado es, Accion acc): Devuelve el estado sucesor resultante de aplicar la acción acc sobre el estado es. Delega en la función aplicaA de la clase acción, por lo que no es necesario sobreescribirla. 2. Implementación de la estrategia de búsqueda: En el código se suministran dos clases, una para estrategias de búsqueda no informada y otra para estrategias de búsqueda informada (que va acompañada de una clase para implementar heurísticas). Las clases son las siguientes: o EstrategiaBusqueda: Es un interfaz que obliga a que todas las clases que lo implementan tengan un método para resolver problemas de búsqueda. Todas las estrategias de búsqueda no informada deben implementar este interfaz (ver ejemplo/Estrategia4.java). Métodos que contiene: ▪ soluciona(ProblemaBusqueda p): Obtiene la solución (si es posible) al problema pasado como parámetro. Para ello sigue una estrategia de búsqueda sistemática que cada subclase debe implementar en este método. o EstrategiaBusquedaInformada: Interfaz análogo a EstrategiaBusqueda pero que, al tratarse de búsquedas informadas, incluye el uso de una heurística (pasada como parámetro) en el método soluciona. o Heuristica: Clase abstracta que dispone de un método para calcular el valor de la heurística de un estado pasado como parámetro. Las subclases que hereden de esta clase deberán implementar dicho método.
3. Ejemplo: Se incluye como ejemplo la implementación de la estrategia de
búsqueda 4 (vista en el TGR2) para resolver el problema del mundo de la aspiradora (representado según se vio en el TGR1). o ProblemaAspiradora: Subclase de ProblemaBusqueda que contiene la formalización del problema del mundo de la aspiradora tal y como se vio en el TGR1. Define, a su vez, las clases EstadoAspiradora (subclase de Estado) y AccionAspiradora (subclase de Accion). o Estrategia4: Implementación de la estrategia básica de búsqueda vista en el TGR2. Es una implementación del interfaz EstrategiaBusqueda que implementa el método soluciona según lo visto en el TGR2. o Main: Clase principal que permite lanzar una ejecución. El método main instancia un ProblemaAspiradora especificando un EstadoAspiradora como estado inicial. Por otra parte, instancia un objeto Estrategia4, que es el que se utiliza para resolver el problema instanciado. Por último, se imprime por pantalla el resultado del método soluciona, que es el estado meta encontrado.
Diseño de Terapia Grupal Basada en El Psicodrama, Narradrama y Sus Diversos Estilos Para El Desarrollo de La Autoestima en Adolescentes Puertorriqueños Del Género Masculino (Pubertad Temprana - 13-15 Años)