Tema 2 PEC 1 Resolución de problemas: ● Los estados: ○ Posibles estados del problema. Ej: Problema de las 8 reinas hay VR(9,8) = 98 = 43.046.721 estados ○ Hay estados que pueden ser inválidos, se debe aplicar las restricciones del problema planteado. ○ No siempre se puede acceder desde cualquier estado a otro estado. ● Los operadores: ○ Posibles operadores del problema. Ej: Problema de las 8 reinas se define un único operador que recibe dos valores x e y. ○ El operador puede controlar si el estado que va a generar es válido o no. ○ Se el operador gestiona la validez del estado se reduce el número de estado que puede gestionar el problema y por lo tanto reducimos el uso de memoria necesaria para su almacenamiento. ● Definición del problema: ○ El problema será una estructura/clase/objeto/entidad que modeliza. ○ Dispone de N variables para gestionar el estado. ○ Función que define el estado inicial. ○ Función que comprueba si el estado es una s olución. ○ Funcion operador. ○ Función que comprueba si el estado es i nválido (opcional). Nota: El propio operador puede gestionarlo también. ● Definición de la función solución: ○ Indicar argumentos. ○ Indicar problema. ○ Indicar nodo. ● Definición función expandir. ● Definición de estrategia de búsqueda. Nota: En la solución la estrategia era fija por lo que el propio código se encargaba de hacer una búsqueda en profundidad o en anchura. ○ Estrategia de búsqueda en anchura. ■ Consume una mayor cantidad de espacio al abrir todas las ramas del árbol hasta N-1 niveles. ■ Consigue el mejor resultado siempre. ■ La nueva lista de nodos se añaden al final de la cola de nodos pendientes. ○ Estrategia de búsqueda en profundidad. ■ Reduce la cantidad de ramas que se despliegan, permitiendo obtener resultado en un menor tiempo y con un menor consumo de memoria. ■ Normalmente no consigue obtener el mejor resultado. ■ La nueva lista de nodos se añaden al principio de la cola de nodos pendientes. ● Resolución del problema: ○ Paso 0. Se comienza desde un estado inicial dado y con una lista de nodos por expandir donde está el nodo con el estado inicial. ○ Paso N. Se comprueba si el siguiente nodo es la solución y sino se expande. Se añaden los nuevos nodos en la lista de nodos por expandir en función de la estrategia de búsqueda seleccionada. ○ Paso Final. Se comprueba si el siguiente nodo es la solución y se obtiene una solución. ● Cambios en la modelización del problema. ○ El operador debe tener en cuenta el cambio. ○ Se altera el estado inicial. ○ Ejemplo: Se añade variante que modifica las reglas del problema. En el problema de las 8 reinas se añaden bloques que no permiten la muerte entre reinas. PEC 2 Estudio de la heurística de un grafo dado: ● Admisibilidad Un grafo es admisible mientras que el coste heurístico de ir de un nodo A a un nodo objetivo sea siempre inferior o igual al coste real (no se produce sobreestimación). Nota: Si es admisible no sabemos si puede ser consistente o no. ● Consistencia Un grafo es consistente cuando el valor heurístico de nodo A es igual o inferior al coste de ir al nodo B más el valor heurístico del nodo B. Nota: Si es consistente es a la vez admisible. ● ● ● Grafos de Martelli. Algoritmo A*: ○ En algunos casos se puede ampliar el algoritmo simplificado. Cuando la heurística es monótona. Cuando la heurística es consistente. Ignora los nodos ya explorados y el primer camino que encuentra será el mejor. ○ Aplicación: ■ Comenzamos con un solo nodo abierto (nodo x, heurística y) y ninguno cerrado. ■ Expandimos el nodo y obtenemos la nueva lista, el orden no importa y siempre se búsqueda el nodo con menor valor heurístico. ■ Continuamos expandiendo nodos e ignorando nodos ya cerrados hasta llegar a la solución. Ejemplo: En la PEC 2 se obtiene como solución el coste 30 que es mayor al real y por lo tanto no es una solución óptima. ○ En otros casos se debe aplicar el algoritmo completo. Debe volver a explorar los nodos ya cerrados y volver abrirlos para que sean reevaluados de nuevo. ○ Aplicación: ■ Comenzamos con un solo nodo abierto (nodo x, heurística y) y ninguno cerrado. ■ Expandimos el nodo y obtenemos la nueva lista, el orden no importa y siempre se búsqueda el nodo con menor valor heurístico. ■ Continuamos expandiendo nodos y volviendo mover nodos ya cerrados a la lista de nodos abiertos hasta llegar a la solución. Ejemplo: En la PEC 2 se obtiene como solución el coste 23 que es el real y por lo tanto es una solución óptima. Lisp. ○ Se pregunta qué implementación del algoritmo A* estaba implementada: ■ Algoritmo completo. Se comprueba mediante la definición del estado inicial, el estado final y la ejecución del código. ■ Se define la función heurística: (defun [nombre] ([variable “estado”]) (cond ((equal [variable “estado”] ‘letra) x) … (t x))) ■ Se define la función de coste: (defun [nombre] ([variable “estado1”] [variable “estado2”]) (cond ((and (equal [variable “estado1”] ‘letra) (equal …) x) … (t x))) Tema 3 PEC 3 Sistema de marcos: ● ● Composición: ○ Se define un nodo raíz en la jerarquía. Puede tener campos con valores predeterminados. Algunos de los valores puede ser un rango. ○ Se añaden subnodos que heredan del primero. Puede tener campos propios (valores determinados). O campos miembro que pertenecen a las instancias. ○ Pueden haber nodos con herencia múltiple. ○ FInalmente se indican instancias de nodos clase. ○ Se pueden definir demonios para gestionar algunas tareas. Ej. un demonio puede ser un sistema que filtra viajes en función del rango de días. Consulta del sistema (inferencia): ○ Podemos hacer una pregunta al sistema. Comenzamos analizando la instancia y si esta no puede responder la consulta subimos en la jerarquía. ○ Cuando hay un conflicto por herencia múltiple podemos intentar aplicar la ordenación topológica. Solo se aplica cuando el conflicto no está dentro de un ciclo. En la pec no resuelve el problema ya que según el camino escogido en su aplicación obtenemos una respuesta u otra. ○ Hay situaciones en las que no se puede dar una respuesta. Ej: Preguntar a la instancia “Nueva York” por la duración del viaje no era respondido por que nadie tenía asignada la duración del mismo. Sistemas de reglas: ● ● ● ● ● Tenemos un conjunto de reglas con unos antecedentes dados y unos consecuentes. Podemos tener una memoria previamente cargada con premisas ya conocidas. Puede hacerse una búsqueda hacia adelante. Puede hacerse una búsqueda hacia atrás (o encadenamiento hacia atrás). Se ejecuta por ciclos. ● Acciones aplicables: ○ Obstinancia: Descartamos las reglas ya aplicadas en otros ciclos. Reduce el conjunto de reglas disponibles para aplicar. ○ Recencia: Seleccionamos las reglas referente a los hechos más recientes. ○ Especificidad: Seleccionamos las reglas que hacen referencia a los objetos más específicos. ○ Orden textual: Ordenamiento conforme vienen las reglas en la base de datos. ● Criterio de selección de regla. Ej. En la PEC ejercicio 2.1 se seleccionaba la regla de menor índice. ○ Pueden surgir conflictos. ○ Selección según las normas que nos indican. Ej En la PEC ejercicio 2.1 se aplicaba la regla con menor índice. ● Otras consideraciones: ○ Solidez: Método que es sólido cuando sólo se generan oraciones implicadas. ○ Inconsistencia Una base de conocimientos es inconsistente si podemos deducir una propiedad a así como también su negación ¬a. ○ Completitud Método que es completo cuando se pueden deducir todas las consecuencias de un sistema formal. Tema 4 PEC 4 Sistemas difusos: ● Se usa un conjunto de variables. ○ Cada variable puede tener un conjunto de valores que es su lingüístico. ○ Por cada variable se calcula sus rangos. ○ Cada rango tiene una función. ○ El conjunto es la función de pertenencia. ● Estudio: ○ Se analizan los puntos de corte entre el eje x (el valor obtenido a partir del valor de la variable) y el eje Y para el lingüístico activado. ● Existen unos bloques de reglas: ○ Existen reglas con una o más variables, donde participa un lingüístico. ○ Pueden estar unidas por conjunciones (AND) o disyunciones (OR). ○ Tienen un consecuente, siendo otro valor lingüístico. ○ Para seleccionar reglas aplicamos t-norma (AND) y obtenemos el valor más pequeño. ○ Cuando tenemos varias reglas activas con el mismo lingüístico en el consecuente, aplicamos t-conorma (OR) y obtenemos el valor más grande. ● Salida nitida: ○ Primero obtenemos la función de pertenencia final de la salida del último bloque. ○ Aplicamos el método del COG para obtener el valor: ○ O aplicamos el cálculo de integrales definidas por límites en cada trozo de la función de pertenencia.