Ingeniería en Informática – FICH-UNL Inteligencia Artificial Unidad 6: Bases de conocimiento Docente: Dr. Georgina Stegmayer gstegmayer@santafe-conicet.gov.ar Ingeniería en Informática – FICH-UNL Cálculo situacional Docente: Dr. Georgina Stegmayer gstegmayer@santafe-conicet.gov.ar CALCULO SITUACIONAL 4 Olor Olor Bris Bri Bri Olor O sa a Olor salor 3 Base de Acción(agarrar, 3) conocimiento preguntar BC |= accion(a,t) 2 (sentencias) ¿cuál es la mejor acción? 1 de cir resplandor(celda(3,2), tiempo(3)) Olor 1 Bris Bri Bri sa a sa Bris Bri Bri asa sa Bris Bri Bri asa sa Bris Bri Bri asa sa 2 Bris Bri Bri sa a sa 3 ir b i rc pe (Olor , Brisa , Resplandor , nada , nada) La sentencia almacenada en la BC debe incluir la percepción y el tiempo en que esta fue obtenida. El agente necesita saber cuándo vio qué cosa. 3 4 CALCULO SITUACIONAL Sentencias diacrónicas: Permiten razonar a través del tiempo. 4 Olor Olor Bris Bri Bri Olor O sa a Olor salor 3 2 Olor 1 1 Bris Bri Bri sa a sa Bris Bri Bri asa sa Bris Bri Bri asa sa Bris Bri Bri asa sa 2 Bris Bri Bri sa a sa 3 En(agente, celda(1,1),3) + accion(avanzar,3) 4 En(agente, celda(2,1),4) 4 CALCULO SITUACIONAL Cálculo situacional: método de representación que permite razonar sobre los resultados de las acciones de un agente basado en conocimiento. Situación: denota los estados resultantes de ejecutar acciones. Una situación se denota con un valor s. Ej: s=Resultado(a,s-1) Una situación s es el resultado de haber aplicado la acción a en la situación anterior. 5 CALCULO SITUACIONAL Definiciones en Cálculo situacional: Acciones: son términos lógicos como girar, avanzar, tomar, etc. Situación: términos lógicos que consisten en una situación inicial y todas las situaciones que son generadas mediante la aplicación de una acción a una situación. Flujos: son funciones y predicados que varían de una situación a otra. Funciones o predicados atemporales: funciones y predicados que no varían de situación en situación. 6 AGENTE LOGICO para el Mundo del Wumpus El primer paso en la construcción del agente es la definición de la interfase entre el ambiente y el agente. Una afirmación de una percepción podría ser: Percepción ([Olor , Brisa , Resplandor , nada , nada], 5) En la cual se incluyen las percepciones y el indicador temporal que define en qué momento se obtuvo la misma. Las acciones del agente deberá ser alguna de las siguientes: Doblar(derecha), Doblar(izquierda), Avanzar, Disparar, Tomar, Soltar 7 AGENTE LOGICO para el Mundo del Wumpus Supongamos que en el mundo de Wumpus se percibe Brisa y Olor,en el tiempo 5: Percepción ([Olor , Brisa , nada , nada , nada], 5) Informar (BC,Percepción ([Olor , Brisa , nada , nada , nada], 5)) Consultar retorna una lista Consultar (BC,∃a Acción(a , 5))como la siguiente {a / Doblar(derecha)}, con lo cual se espera que Doblar(derecha) sea el valor asignado a la variable acción BC |= Acción(a , 5) {a / Doblar(derecha)} 8 LOGICO para el EL Mundo del Wumpus BASEAGENTE DE CONOCIMIENTO PARA DOMINIO DE WUMPUS Las reglas más sencillas para un agente serían Reglas que vinculen percepciones con acciones: ∀S,B,U,C,T Percepción([S,B,resplandor,U,C], T) ⇒ Acción (tomar,T) Un esquema de reglas más flexibles, podría desacoplar las percepciones de las acciones. Por ejemplo: ∀S,B,U,C,T Percepción([S,B,resplandor,U,C], T) ⇒ Oro (T) ∀S,R,U,C,T Percepción([S,brisa,R,U,C], T) ⇒ Ventoso(T) Luego vincular las conclusiones con acciones: ∀ T Oro(T) ⇒ Acción( tomar , T) 9 LOGICO para el EL Mundo del Wumpus BASEAGENTE DE CONOCIMIENTO PARA DOMINIO DE WUMPUS Qué problema tendría un agente reflexivo simple al aplicar esta regla? Reflexión: ∀ T Oro(T) ⇒ Acción( tomar , T) Cómo podría resolverlo? 10 LOGICO para el EL Mundo del Wumpus BASEAGENTE DE CONOCIMIENTO PARA DOMINIO DE WUMPUS Qué problema tendría un agente reflexivo simple al aplicar esta regla? Reflexión: ∀ T Oro(T) ⇒ Acción( tomar , T) Cómo podría resolverlo? Reflexión considerando el estado interno: ∀ T Oro(T) ∧ ¬Sostiene (Oro , T) ⇒ Acción( tomar , T) Sostiene (Oro , T) no puede ser observado por el Agente. Es necesario mantener la historia de los cambios sufridos en el dominio. 11 REPRESENTAR LOS CAMBIOS EN EL MUNDO En el diseño de agente, se adicionan todas las percepciones a la BC y en principio la historia de las percepciones es todo lo que hay que conocer acerca del mundo. Si permitimos reglas que hagan referencia a esas percepciones pasadas así como a las actuales, luego podemos extender las capacidades de un agente para que actúe de forma OPTIMA. 12 REPRESENTAR LOS CAMBIOS EN EL MUNDO La forma más sencilla de representar cambios es simplemente cambiar la BC, actualizándola con cada nueva percepción, sin embargo esto nos deja sin memoria (sobre los estados pasados) para especular acerca de posibles futuros escenarios. Una alternativa para mantener esta memoria es representar en la BC sólo los cambios, es decir las situaciones y acciones diferentes. Es necesario decidir cuáles son los objetos y relaciones más apropiadas, y luego escribir los axiomas vinculados con ellos. 13 CALCULO SITUACIONAL El Cálculo Situacional propone una forma particular de representar cambios en la lógica de predicados de primer orden. El Cálculo Situacional considera al mundo como una secuencia de situaciones, en donde cada situación es una fotografía del estado del mundo. Las situaciones son generadas a partir de situaciones previas mediante la aplicación de acciones. Cada relación o propiedad que puede cambiar con el tiempo es manejada mediante la asociación con un argumento situacional extra en el correspondiente predicado. En no admite más de una Ubicación para un dado Agente. En (Agente , Ubicación) En admite más de una Ubicación para un dado Agente. Parámetro Situacional En (Agente , Ubicación , Situación) 14 CALCULO SITUACIONAL El próximo paso es definir como cambia el mundo de situación. Para esto utilizaremos la función: Resultado (Acción , Situación) En donde la función representa la Situación resultante de realizar Acción a partir de Situación. Por ejemplo: Resultado (avanzar , s0) = s1 Resultado ( girar (izquierda) , s1) = s2 En(a,[2,1],S1) En(a,[1,1],So) avanzar 15 CALCULO SITUACIONAL Axiomas de efecto ∀ S,G, L en ( G ,L, S ) ∧ Oro ( G ), en(A, L,S) ⇒ Sostiene ( G , Resultado (tomar , S)). Un axioma similar dice que el agente no sostiene nada luego de ejecutar una acción de soltar ∀ S , G ¬Sostiene ( G , Resultado (soltar , S)) Estos axiomas se conocen como Axiomas de Efecto. Describen cambios debido a una acción 16 CALCULO SITUACIONAL Axiomas de efecto ∀ S,X,Y ,O sostiene ( O , S ) ∧ en(O,X,S) ∧ Adyacente (X,Y)⇒ en ( O,Y , Resultado (avanzar, S)). On(X,Z,S),Clear(Y,S),¬(Z=Y) ⇒ Clear(Z,Resultado(putOn(X,Y),S)) 17 Mediante los Axiomas de Efecto podemos representar que cambia, de situación en situación, como resultado de aplicar una acción. Clear(X , S’) ? On(X,Z,S),Clear(Y,S),¬(Z=Y) ⇒ Clear(Z,Resultado(putOn(X,Y),S)) El problema es que estos axiomas no indican qué cosas no cambian y permanecen entre dos situaciones. 18 CALCULO SITUACIONAL Axiomas de marco o Frame Necesitamos describir qué cosas no cambian cuando se aplica una acción. Por ejemplo, si el agente está sosteniendo el oro, y se ejecuta una acción (distinta de soltar), es necesario representar que el agente lo sigue sosteniendo. Nada en la BC justifica esta conclusión: Sostiene ( G , Resultado (avanzar , S)). 19 CALCULO SITUACIONAL Axiomas de marco o frame ∀S , G , A Sostiene ( G , S ) ∧ ( A ≠ soltar ) ⇒ Sostiene ( X , Resultado ( A , S )) ∀S , G , A ¬Sostiene ( X , S ) ∧ (( A ≠ tomar ) ∨ ¬(Presente ( G , S ) ∧ oro ( G )) ⇒ ¬ Sostiene ( G , Resultado ( A , S )) Axiomas como éstos se denominan axiomas de marco o FRAME (su nombre proviene de las técnicas de animación en películas en donde el fondo permanece constante y los caracteres se mueven de frame en frame). 20 CALCULO SITUACIONAL Axiomas de estado sucesor Un Axioma de Estado Sucesor describe un predicado P (no una acción específicamente) que puede variar de situación en situación El predicado P es cierto luego de la aplicación de una acción ⇔ [(la acción hace cierto P) o (P era cierto y la acción no lo niega)] 21 CALCULO SITUACIONAL Axiomas de estado sucesor ∀S , G , A, X Sostiene ( G , Resultado( A , S )) ⇔ [(A = tomar ∧ en ( G, X , S ) ∧ oro ( G )) ∨ (Sostener ( G , S ) ∧ A ≠ Soltar)] Es necesario establecer uno de estos axiomas por cada uno de los predicados que cambian con el tiempo. Cada uno de estos axiomas debe listar todas las formas en que el predicado puede ser cierto y puede ser falso. 22 CALCULO SITUACIONAL Axiomas de estado sucesor ∀S , G , A, X Sostiene ( G , Resultado( A , S )) ⇔ [(A = tomar ∧ en ( G, X , S ) ∧ oro ( G )) ∨ (Sostener ( G , S ) ∧ A ≠ Soltar)] Fluido: cambia de situación en situación. Tiene como argumento el argumento situacional Qué acciones la hacen verdadera: axioma de efecto. Que cosas permanecen igual: axioma de cuadro. 23 1 2 3 4 1 4 4 3 3 2 2 1 1 En(a, [1,1], s0) 1 2 3 4 2 3 4 En(a, [1,2], s´0) 4 avanzar s1 = resultado(avanzar,s0) 3 2 1 girar s1 = resultado(girar,s´0) En(a, [1,2], s1) 24 Representar Ubicación en el Mundo En este problema la ubicación es uno de los aspectos que tiene quizás mayor importancia, pero no puede ser percibida, aunque debe ser utilizada para poder ubicar donde están sus objetivos y los riesgos. La ubicación la podemos representar con el Predicado Posición( Agente , Celda , Situac.), y la Función Orientación( Agente , Situac.) = ángulo ; 0° corresponde al eje x este. Posición ( agente , [1 , 1] , s0) Orientación (agente , s0) = 0 1 2 4 3 2 1 25 3 4 El axioma de estado sucesor para Orientación Orientación( Agente , Situación) ∀ a , d , p , s Orientación(p , Resultado(a , s)) = d ⇔ [(a = Doblar(derecha) ∧ d = Mod(Orientación(p , s) - 90 , 360)) ∨ (a = Doblar(izquierda) ∧ d = Mod(Orientación(p , s) + 90 , 360)) ∨ (Orientación(p , s)=d ∧ ¬(a=Doblar(derecha) ∨ a=Doblar(izquierda)))] 1 2 Orientación(agente , 4 Resultado(Doblar(izquierda) , s0)) = d 3 2 Posición ( agente , [1 , 1] , s0) Orientación (agente , s0) = 0 1 26 3 4 1 Es necesario conocer como se organizan las celdas, para lo cual se puede definir la función: 2 4 3 PróximaUbicación (Celda , Orientación) 2 Posición ( agente , [1 , 1] , s0) Orientación (agente , s0) = 0 1 Es necesario conocer como se organizan las celdas: ∀X , Y PróximaUbicación ([X , Y] , 0) = [ X + 1 , Y] ∀X , Y PróximaUbicación ([X , Y] , 90) = [ X , Y + 1] ∀ X , Y PróximaUbicación ([X , Y] , 180) = [ X - 1 , Y] ∀ X , Y PróximaUbicación ([X , Y] , 270) = [ X , Y - 1] 27 3 4 Empleando la función: PróximaUbicación (Celda , Orientación) 1 2 3 4 4 3 2 Posición ( agente , [1 , 1] , s0) 1 Orientación (agente , s0) = 0 se puede inferir cual es la celda que se encuentra delante del agente: ∀p , l , s En(p,l,s) ⇒ UbicaciónAdelante(p,s)=PróximaUbicación(l,Orientación(p,s)) Se define la adyacencia ∀ l1 , l2 Adyacente(l1 , l2) ⇔ ∃ d l1 = PróximaUbicación(l2,d) 28 Definición de las paredes o límites del espacio ∀ x , y Pared ([x , y]) ⇔ (x = 0 ∨ x = 5 ∨ y = 0 ∨ y = 5) El axioma de estado sucesor para ubicación En( Agente , Ubicación , Situación) ∀∀ a , d , p , s En(p , l , Resultado(a , s)) ⇔ • [(a = Avanzar ∧ l = UbicaciónAdelante(p , s) ∧ ¬Pared(l)) • ∨ • (En(p , l , s) ∧ a ≠ Avanzar)] 1 4 3 Posición ( agente , [1 , 1] , s0) Orientación (agente , s0) = 0 2 1 29 2 3 4 REGLAS CAUSALES Las Reglas Causales expresan que ciertas propiedades ocultas del dominio producen determinadas percepciones Reglas que indican las condiciones de las celdas adyacentes a las celdas que alojan a Wumpus o Caverna: ∀∀ l1 Wumpus ( l1) ⇒ [∀ l2 Adyacente(l1 , l2) ⇒ Olor(l2)] ∀ l1 , l2 Caverna( l1 ) ⇒ [∀ l2 Adyacente(l1 , l2) ⇒ brisa(l2)] ∀ l2 [∀ l1 Adyacente(l1 , l2) ⇒ ¬Caverna( l1 ) ] ⇒ ¬ brisa(l2) 30 REGLAS CAUSALES Reglas que indican las condiciones de las celdas seguras: ∀∀ l (¬Wumpus ( l ) ∧ ¬ Caverna ( l ) ∀⇔ •OK(l) 31 REGLAS DE DIAGNÓSTICO Las Reglas de Diagnóstico infieren ciertas propiedades del dominio a partir de información obtenida de determinadas percepciones Una representación para las percepciones sería: ∀S,B,U,C,s Percepción([S,B,resplandor,U,C], s) ⇒ Oro (s) ∀S,R,U,C,s Percepción([S,brisa,R,U,C], s) ⇒ Brisa(s) Reglas que asocian lo que perciben a la celda en la que se encuentran: ∀∀ l , s En(Agente , l , s) ∧ Brisa(s) ⇒ corrienteAire(l) ∀∀ l , s En(Agente , l , s) ∧ Olor(s) ⇒ apesta(l) ∀l1 apesta(l1) ⇒ ∃ l2 Adyacente(l1,l2) ∧ Wumpus ( l2) ∀l1 ¬apesta(l1) ⇒ ¬ ∃ l2 Adyacente(l1,l2) ∧ Wumpus ( l2) ∀l1 apesta(l1) ⇔∃ l2 Adyacente(l1,l2) ∧ Wumpus32( l2) ELEGIR ACCIONES: ranking Es conveniente separar los HECHOS acerca de las Acciones de los HECHOS acerca de los objetivos, lo cual implica que el agente puede ser reprogramado con solo pedirle que consiga algo diferente ∀a, sMuyBuena (a, s) ⇒ Acción (a, s) ∀a, s Buena (a, s) ∧ (¬∃ bMuyBuena (b, s)) ⇒ Acción (a, s) ∀a, s Regular (a, s) ∧ ( ¬∃b MuyBuena (b, s) ∨ Buena (b, s)) ⇒ Acción (a, s) ∀a, sRiesgosa (a, s) ∧ (¬∃b MuyBuena (b, s) ∨ Buena (b, s) ∨ Regular (b, s)) ⇒ Acción (a, s) Un sistema que contiene este tipo de reglas se denomina Sistemas de Acción-Valor Notar que las reglas no hacen referencia que acción realmente se debe ejecutar, solo cuan deseable es. 33 CATEGORIZACIÓN DE ACCIONES EN EL PROBLEMA DE WUMPUS Hasta el punto de recoger el oro, la estrategia básica del agente será: • Acciones MuyBuenas incluyen tomar el oro cuando lo encuentran y salir de la cueva con el oro • Acciones Buenas incluyen moverse a celdas OK y que no hayan sido visitadas • Acciones Regulares incluye moverse a celdas que no se sabe que sean mortales ni OK • Acciones Mortales serán mover a una celda en la cual se sabe que está el monstruo o hay un pozo ∀ s Sostener (oro, Re sultado(tomar , s)) ⇒ MuyBuena(tomar , s) 34 Agente que resuelve problemas. Cómo?? p.e. con Cálculo Situacional Axiomas de estado sucesor: Un axioma de estado sucesor tiene que elaborar una lista de todas las situaciones que convierten en verdadero el predicado, y todas aquellas que lo convierten en falso. Axioma sigue siendo VERDADERO [ una acción lo valida ∨ sigue siendo válido y ninguna accion lo convirtió en falso] Ingeniería en Informática – FICH-UNL Sistemas de producciones Docente: Dr. Georgina Stegmayer gstegmayer@santafe-conicet.gov.ar ENCADENAMIENTO HACIA ADELANTE Comenzar desde las sentencias atómicas en una BC y aplicar Modus Ponens añadiendo las sentencias atómicas nuevas hasta que no se puedan realizar más inferencias o hasta que el objetivo haya sido agregado. Cada inferencia es la aplicación de modus ponens Utiliza solamente cláusulas positivas: disyunción de literales de los cuales sólo uno es positivo. ENCADENAMIENTO HACIA ADELANTE BC: [1]Rey(x) ^ codicioso(x) ⇒ malvado(x) [2]Rey(juan). [3]Codicioso(juan). reglas Sentencias Atómicas Preguntar a BC: ¿quién es malvado? Malvado(y)? Aplicando modus ponens: Con θ={x/juan} se concluye: Malvado(juan). ENCADENAMIENTO HACIA ADELANTE Como se resolvió? Emparejar patrones: buscar un θ/ la premisa de la regla se haga verdadera en la BC. p1 ^ p2 ^..... ^ pn ⇒ q y existe p’1, p’2 ....p`n en BC y p1 θ = p’1 .... Aplicar modus ponens: agregar a la BC q’ = q. θ Unifica malvado(y) con malvado(juan)? Si: θ={y/juan} ENCADENAMIENTO HACIA ADELANTE Para c/ regla: p1^p2^...^pn ⇒ q encontrar θ / sust(θ,p1,p1...pn) =sust(p’1,p’2, ..., p’n) para algún p’1,p’2... en BC Hacer q’ = sust(θ, q) Agregar q’ a nuevo. Match ejecutar Objetivo? si no Agregar q’ a BC si no está previamente Unifica(q’, objetivo) ? Fin ENCADENAMIENTO HACIA ADELANTE Ventajas: Económico. Útiles para realizar inferencias a partir de nueva información. Desventajas: Cláusulas positivas de primer orden Se pueden generar infinitos hechos nuevos. El Ej: numNat(0). numNat(n) ⇒ numNat(s(n)). “emparejamiento de patrones” puede ser muy costoso. Deducción de hechos irrelevantes. Sistemas de producciones con encadenamiento hacia adelante M.I B.C M.P M.T. M.I: Máquina de inferencia BC: Base de conocimiento MP: Memoria de producciones MT: Memoria de trabajo. Sistemas de producciones con encadenamiento hacia adelante Memoria de Trabajo: Contiene un conjunto de literales positivas que no contienen variables. Por ejemplo: (perro tiene pelo) (Tito es_un caballo). (Perro es_un mamífero). Sistemas de producciones con encadenamiento hacia adelante Memoria de Producciones: está constituidas por reglas del tipo: IF <cond 1> <cond 2> ... <cond n> THEN <acc 1> ... <acc n> lado izquierdo - antecedentes lado derecho - consecuente Sistemas de producciones con encadenamiento hacia adelante Memoria de Producciones: Lado Izquierdo: cada antecedente debe aparear con una afirmación. Puede contener variables Lado Derecho: especifica acciones sobre la memoria de trabajo (agregar, eliminar elementos de la MT). Sistemas de producciones con encadenamiento hacia adelante Ejemplo de Regla: IF (?x tiene pelo) Then add (?x es un mamifero). ?x: es una variable que adquiere valor cuando la regla es apareada con algún hecho de la MT. Sistemas de producciones con encadenamiento hacia adelante Encadenamiento hacia adelante Match (fase cotejo) Se compara cada elemento de la premisa con el contenido de la Memoria de Trabajo. Se incorpora al conjunto de conflicto aquellas reglas cuya premisa se satisface con la memoria de trabajo actual Resolución de conflictos Se decide cual de las reglas contenidas en el conjunto de conflicto se va a ejecutar. Entre los criterios empleados se pueden mencionar: la más específica, la satisfecha con hechos más recientes, etc. Aplicación Se aplica el consecuente de la regla seleccionada. Se agregan a la memoria de trabajo los hechos que componen el consecuente o se ejecutan las acciones Sistemas de producciones con encadenamiento hacia adelante Fase de cotejo: unificar las variables de los antecedentes con los elementos de la MT. MT. (perro tiene pelo) MP. IF (?x tiene pelo) Then add (?x es un mamifero). Unifica ?x con Perro Sistemas de producciones con encadenamiento hacia adelante Fase de cotejo: Identifica todas aquellas reglas que satisfacen sus antecedentes. Resultado: disparar. conjunto de reglas candidatas a Sistemas de producciones con encadenamiento hacia adelante Fase de solución de conflictos: seleccionar cual de las reglas candidatas ejecutar. Estrategias: No duplicación Novedad Especificidad Prioridad de operación. Sistemas de producciones con encadenamiento hacia adelante Fase de ejecución: Una vez que se seleccionó cual regla aplicar se ejecuta la misma. Existen dos interpretaciones posibles: Agregar los consecuentes a la MT Ejecutar las acciones indicadas en el consecuente (add, erase, modify) Ejemplo: un robot en un Zoológico (ejercicio 1 de la guía). • pelos(x) => mamífero(x) “todos los mamíferos tienen pelos ” Ejemplo: un robot en un Zoológico (ejercicio 1 de la guía). • • pelos(x) => mamífero(x) daLeche(x) => mamífero(x) “se sabe que los mamíferos dan leche” Ejemplo: un robot en un Zoológico (ejercicio 1 de la guía). • • • • • pelos(x) => mamífero(x) daLeche(x) => mamífero(x) plumas(x) => ave(x) vuela(x) => ave(x) poneHuevos(x) => ave(x) “Las aves, por el contrario, tienen plumas, vuelan y ponen huevos ” Ejemplo: un robot en un Zoológico (ejercicio 1 de la guía). • • • • • pelos(x) => mamífero(x) daLeche(x) => mamífero(x) plumas(x) => ave(x) vuela(x) => ave(x) poneHuevos(x) => ave(x) Ejemplo: un robot en un Zoológico. • • mamífero(x) ∧ comecarne(x) => carnívoro(x) mamífero(x) ∧ dientes(x,afilados) ∧ garras(x) ∧ ojos(x,adelante) => carnívoro(x) mamífero(x) ∧ rumiante(x) => ungulado(x) • • carnívoro(x) ∧ color(x,amarillento) ∧ manchas(x,negras) => leopardo(x) • carnívoro(x) ∧ color(x,amarillento) ∧ rayas(x,negras) => tigre(x) • ungulado(x) ∧ piernas(x,largas) ∧ cuello(x,largo) ∧ color(x,amarillento) ∧ manchas(x,negras) => jirafa(x) • ungulado(x) ∧ color(x,blanco) ∧ rayas(x,negras) => cebra(x) • ave(x) ∧ noVuela(x) ∧ patas(x,largas) ∧ cuello(x,largo) ∧ color(x,blancoynegro) => avestruz(x) • ave(x) ∧ noVuela(x) ∧ nada(x) ∧ color(x,blancoynegro) => pingüino(x) • ave(x) ∧ vuela(x) => tucán(x) • carnívoro(x) ∧ color(x,amarillento) ∧ manchas(x,negras) => leopardo(x) • carnívoro(x) ∧ color(x,amarillento) ∧ rayas(x,negras) => tigre(x) • ungulado(x) ∧ piernas(x,largas) ∧ cuello(x,largo) ∧ color(x,amarillento) ∧ manchas(x,negras) => jirafa(x) • ungulado(x) ∧ color(x,blanco) ∧ rayas(x,negras) => cebra(x) • ave(x) ∧ noVuela(x) ∧ patas(x,largas) ∧ cuello(x,largo) ∧ color(x,blancoynegro) => avestruz(x) • ave(x) ∧ noVuela(x) ∧ nada(x) ∧ color(x,blancoynegro) => pingüino(x) • ave(x) ∧ vuela(x) => tucán(x) • carnívoro(x) ∧ color(x,amarillento) ∧ manchas(x,negras) => leopardo(x) • carnívoro(x) ∧ color(x,amarillento) ∧ rayas(x,negras) => tigre(x) • ungulado(x) ∧ piernas(x,largas) ∧ cuello(x,largo) ∧ color(x,amarillento) ∧ manchas(x,negras) => jirafa(x) • ungulado(x) ∧ color(x,blanco) ∧ rayas(x,negras) => cebra(x) • ave(x) ∧ noVuela(x) ∧ patas(x,largas) ∧ cuello(x,largo) ∧ color(x,blancoynegro) => avestruz(x) • ave(x) ∧ noVuela(x) ∧ nada(x) ∧ color(x,blancoynegro) => pingüino(x) • ave(x) ∧ vuela(x) => tucán(x) • carnívoro(x) ∧ color(x,amarillento) ∧ manchas(x,negras) => leopardo(x) • carnívoro(x) ∧ color(x,amarillento) ∧ rayas(x,negras) => tigre(x) • ungulado(x) ∧ piernas(x,largas) ∧ cuello(x,largo) ∧ color(x,amarillento) ∧ manchas(x,negras) => jirafa(x) • ungulado(x) ∧ color(x,blanco) ∧ rayas(x,negras) => cebra(x) • ave(x) ∧ noVuela(x) ∧ patas(x,largas) ∧ cuello(x,largo) ∧ color(x,blancoynegro) => avestruz(x) • ave(x) ∧ noVuela(x) ∧ nada(x) ∧ color(x,blancoynegro) => pingüino(x) • ave(x) ∧ vuela(x) => tucán(x) • carnívoro(x) ∧ color(x,amarillento) ∧ manchas(x,negras) => leopardo(x) • carnívoro(x) ∧ color(x,amarillento) ∧ rayas(x,negras) => tigre(x) • ungulado(x) ∧ piernas(x,largas) ∧ cuello(x,largo) ∧ color(x,amarillento) ∧ manchas(x,negras) => jirafa(x) • ungulado(x) ∧ color(x,blanco) ∧ rayas(x,negras) => cebra(x) • ave(x) ∧ noVuela(x) ∧ patas(x,largas) ∧ cuello(x,largo) ∧ color(x,blancoynegro) => avestruz(x) • ave(x) ∧ noVuela(x) ∧ nada(x) ∧ color(x,blancoynegro) => pingüino(x) • ave(x) ∧ vuela(x) => tucán(x) Memoria de trabajo: pelos(Matilde) ∧ cuello(Matilde, largo) ∧ patas(Matilde, largas) ∧ rumiante(Matilde) ∧ color(Matilde, amarillento) ∧ manchas(Matilde, negras) pelos(Facu) ∧ garras(Facu) ∧ ojos(Facu, adelante) ∧ color(Facu, amarillento) ∧ rayas(Facu, negras) ∧ dientes(Facu, afilados) plumas(Mario) ∧ color(Mario, blancoynegro) ∧ noVuela(Mario) ∧ nada(Mario) pelos(x) => mamífero(x) plumas(x) => ave(x) 1er ciclo: Fase de cotejo: conjunto de reglas activas={1, 3} Elementos de la MT que unifican con antecedentes: (pelos(Matilde), pelos(Facu), plumas(Mario)) Fase de resolución de conflicto: se selecciona la regla 1 por prioridad, con los elementos pelos(Matilde) y pelos(Facu) Fase de ejecución: se agrega a la memoria de trabajo: mamífero(Matilde), mamífero(Facu) Memoria de trabajo: pelos(Matilde) ∧ cuello(Matilde, largo) ∧ patas(Matilde, largas) ∧ rumiante(Matilde) ∧ color(Matilde, amarillento) ∧ manchas(Matilde, negras) pelos(Facu) ∧ garras(Facu) ∧ ojos(Facu, adelante) ∧ color(Facu, amarillento) ∧ rayas(Facu, negras) ∧ dientes(Facu, afilados) plumas(Mario) ∧ color(Mario, blancoynegro) ∧ noVuela(Mario) ∧ nada(Mario) mamífero(Matilde) ∧ mamífero(Facu) 2er ciclo: Fase de cotejo: reglas activas={1, 3, 7 y 8}. Elementos de la MT que unifican con antecedentes: (pelos(Matilde), pelos(Facu), plumas(Mario), garra(Facu), ojos(Facu, adelante), mamífero(Facu), mamífero(Matilde), dientes(Facu, afilados)) Fase de resolución de conflicto: entre la 7 y la 8 que son las reglas que unifican con valores más recientes en la MT, se selecciona la 7 por ser más específica. Fase de ejecución: se agrega a la memoria de trabajo: carnívoro(Facu) 3er ciclo: Fase de cotejo: reglas activas={1, 3, 7, 8, 10}. Elementos de la MT que unifican con antecedentes: (pelos(Matilde), pelos(Facu), plumas(Mario), garra(Facu), ojos(Facu, delante), mamífero(Facu), mamífero(Matilde), dientes(Facu, afilados), carnívoro(Facu), color(Facu,amarillento)) Fase de resolución de conflicto: se selecciona la 10 es la regla que unifica con valores más recientes en la MT Fase de ejecución: se agrega a la memoria de trabajo: tigre(Facu) Respuesta: Facundo es un tigre, Matilde es una jirafa y Mario es un pingüino