Agentes que razonan de forma Lógica

Slides:



Advertisements
Presentaciones similares
La aritmetización de la sintaxis
Advertisements

INTELIGENCIA ARTIFICIAL
Lógica y argumentación
equivalencia material; y b) equivalencia lógica
Proposición Atómica: Cuando se puede representar con una variable proposicional. Entre sus signos no contiene ningún conectivo lógico Proposición molecular:
Lógica Proposicional.
PRUEBAS DE VALIDEZ E INVALIDEZ
LÓGICA PROPOSICIONAL.
Álgebra I Prof: Haroldo Cornejo Olivarí.
Curso de Matemática Propedeútica
Conocimiento Base de conocimientos:
Sistemas de Razonamiento Lógico
Representación del conocimiento
CAPITULO 2 La Representación del Conocimiento
Algebra Booleana y Compuertas Lógicas
Lógica de Primer Orden.
Logic M.C. Juan Carlos Olivares Rojas February, 2009.
ANALISIS SINTACTICO El análisis gramatical es la tarea de determinar la sintaxis, o estructura, de un programa. Por esta razón también se le conoce como.
Prolog PROgramming in LOGic
Lógica Proposicional.
Inteligencia Artificial
DEPARTAMENTO DE FORMACIÓN GENERAL.
L. Enrique Sucar/Eduardo Morales
PROGRAMACIÓN LÓGICA.
ESTRUCTURAS DE CONTROL
UNIVERSIDAD DE MANAGUA I CUATRIMESTRE INTRODUCCION A LA PROGRAMACION
Aporte de la Lógica a la Matemática
Universidad de los Andes-CODENSA
Reglas y Encadenamiento de Reglas
Hasta ahora: Lógica Proposicional. q. p:-q. r:-p ?-r. Si tienes un jaguar, conduces rápido. Tienes un jaguar. Es cierto que conduces rápido? p:-q.
M.C. Juan Carlos Olivares Rojas
M.C. Juan Carlos Olivares Rojas
Representación del conocimiento
U. Diego Portales Elementos de lógica Prof. Haroldo Cornejo O.
Estructura de Datos y Algoritmos
ESTRUCTURA DE DATOS ESD-243
LOGICA DE ENUNCIADO LOGICA DE PREDICADO
Lógica Proposicional Profesor: Amador Alejandro Gonzáles Piscoya
LÓGICA PROPOSICIONAL Y PREDICADOS
Campus Estado de México—Raúl Monroy Resolución, la regla de inferencia y el cálculo Raúl Monroy.
Universidad Autónoma San Francisco CARRERA PROFESIONAL: Lengua, Traducción e Interpretación Asignatura: MATEMÁTICA Tema: “SISTEMA FORMAL”
Lógica de proposiciones, deducción natural
Lógica de enunciado La lógica de enunciados o de proposiciones es el nivel más básico de análisis lógico y descansa exclusivamente en las conectivas.
Curso de Teoría del Autómata
MATEMATICA I Lógica Matemticas Prof Rubén Millán
Introducción a la programación
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
DEFINICIÓN DE OBJETO Un objeto es aquello que puede ser observado, estudiado y aprendido CARACTERÍSTICAS nos permiten conocerlos mediante la observación,
CÁLCULO PROPOSICIONAL
Lógica.
Lógica proposicional Docente: Edgar Duarte.
Términos algoritmo diseñar algoritmo implementar algoritmo
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
LEYES DEL ALGEBRA PROPOSICIONAL
Representación del conocimiento
MÉTODOS DE DEDUCCIÓN (Partes I & II)
PRINCIPIOS DE PROGRAMACIÓN
Sistemas Basados en Reglas
Operaciones Algebraicas
Presente un cuestionario con los aspectos mas importantes sobre los
Introducción a la Lógica
Abril CV11 MATEMÁTICAS DISCRETAS MARTES 20:30 – 22:00 MIERCOLES 17:00 – 19:00 JUEVES 16:30 – 17:30 M. en C. José del Carmen.
“CURSO PROPEDÉUTICO PARA EL MEJORAMIENTO DEL PENSAMIENTO MATEMÁTICO”
Matemáticas II. Profesor: Ing. Yadhira M. Rangel Carrillo.
Lic. Carla Aguirre Montalvo
INTELIGENCIA ARTIFICIAL
Desarrollo de Sistemas Expertos
ALGORITMOS Asignatura: Informática. Algoritmos Conjunto de instrucciones ordenadas de forma lógica y precisa, con un inicio y fin que permite resolver.
 Dicho principio lógico podemos formularlo de la siguiente forma: A es A, en la cual la variable A denota un pensamiento o contenido concreto cualquiera.
Logic M.C. Juan Carlos Olivares Rojas February, 2009.
Transcripción de la presentación:

Agentes que razonan de forma Lógica M.C. Juan Carlos Olivares Rojas jolivares@uvaq.edu.mx juancarlosolivares@hotmail.com @jcolivares http://antares.itmorelia.edu.mx/~jcolivar Abril, 2010

Outline Representación del Conocimiento Lógica de Proposiciones Lógica de Predicados Deducción Automática

Outline Sistemas de Deducción Sistemas de Reacción Encadenamiento Progresivo y Regresivo Modelamiento Cognitivo Modelos para la Resolución de Problemas

Representación del Conocimiento El conocimiento debe estar expresado en un lenguaje simbólico para que pueda ser reconocido por una computadora o ‘agente’. Los agentes pueden consultar a la base de conocimientos para resolver problema o bien agregar nuevos conocimientos. Los agentes pueden obtener esta nueva información a través de la inferencia lógica.

Representación del Conocimiento Inicialmente el agente cuenta con unos conocimientos básicos llamados antecedentes o hechos. Se cuenta con una serie de reglas que definen la forma de deducir conocimiento. El agente pregunta a estas reglas y hechos para poder razonar que opción le conviene más ejecutar.

El Juejo del Wumpus Percepciones: (4 sensores) Acciones: {Hedor, Brisa, Resplandor, Nada} El agente no percibe su situación Acciones: Ir hacia adelante, girar izda/dcha 90º Agarrar (estando en la casillla) Disparar (sólo una flecha) Objetivo: salir con el oro lo antes posible 1000 ptos: salir con el oro 1 pto penaliza cada acción. Penaliz. Máxima: 10000 ptos

Lógica de Proposiciones La sintaxis nos indica cuáles son los enunciados que se pueden construir. Los enunciados atómicos se componen de una sola proposición. Una proposición tiene un solo valor de verdad: Verdadero o Falso.

Lógica de Proposiciones Los enunciados complejos se forman a partir de enunciados más simples y el empleo de conectivos lógicos. Los Conectivos Lógicos son cinco: NO (~) también conocida como Negación. Y (^) también conocida como Conjunción. O (v) también conocida como Disyunción. Implicación (⇒) también conocida como Condicional. Sí y sólo si (⇔) también conocida como Bicondicional.

Lógica de Proposiciones Las expresiones que contienen conectivos lógicos se interpretan siguiendo el orden de precedencia que corresponde al mostrado en la tabla anterior. Por ejemplo: ~P ^Q v R ⇒ S equivale a: (~(P) ^(Q v R)) ⇒ S Además, se emplean los paréntesis para evitar ambigüedades.

Lógica de Proposiciones La semántica nos define las reglas que permiten determinar el valor de verdad de un enunciado respecto de algún modelo. Con dos símbolos proposicionales existen 4 modelos posibles para cada uno de los 5 conectivos lógicos, ¿Cómo quedarían las tablas de verdad?

Lógica en Wumpus Regresemos al mundo del Wumpus para visualizar la construcción de la base de conocimiento. Notación: Bij indica que hay brisa en la celda (i,j). Pij indica que hay un pozo en la celda (i,j). A partir de un conocimiento inicial: E1: ~P11

Lógica en Wumpus Cuando hay brisa en una casilla implica que en una casilla contigua hay un pozo: E2: B11 ⇔ P12 v P21 Ahora agregamos la primera percepción, no se percibe brisa en la celda (1,1): E3: ~B11 ¿Cómo relacionar los enunciados 2 y 3 para obtener nuevo conocimiento?

Lógica de Proposiciones Cuando los resultados de una Tabla de Verdad son todos verdaderos, a esa proposición compuesta se le llama Tautología. Como ejemplo tenemos a: (p v ~p) Cuando los resultados de una Tabla de Verdad son todos falsos, a esa proposición compuesta se le llama Contradicción. Como ejemplo tenemos a: (p ^ ~p)

Lógica de Proposiciones Básicamente la inferencia es la implementación de una implicación. Los enunciados conocidos como verdaderos forman parte del antecedente. El consecuente es un nuevo enunciado cuya veracidad se desprende de los anteriores. Simbólicamente se representa así: antecedente :: consecuente

Lógica de Proposiciones La equivalencia lógica se presenta cuando dos enunciados α y β tienen los mismos valores de verdad para el mismo conjunto de modelos. A continuación mostramos una tabla con las equivalencias lógicas más comunes: Doble Negación: ~( ~p ) ≡ p

Lógica de Proposiciones Leyes Conmutativas ( p v q ) ≡ ( q v p ) ( p ^ q ) ≡ ( q ^ p ) Leyes Asociativas ( p v q ) v r ≡ p v ( q v r ) ( p ^ q ) ^ r ≡ p ^ ( q ^ r )

Lógica de Proposiciones Leyes Distributivas p v ( q ^ r ) ≡ ( p v q ) ^ ( p v r ) p ^ ( q v r ) ≡ ( p ^ q ) v ( p ^ r ) Leyes de Idempotencia ( p v p ) ≡ p ( p ^ p ) ≡ p

Lógica de Proposiciones Leyes de DeMorgan ~( p v q ) ≡ ~p ^ ~q ~( p ^ q ) ≡ ~p v ~q Leyes de Identidad ( p v ~p ) ≡ t ( p ^ ~p ) ≡ f ( p v f ) ≡ p ( p v t ) ≡ t

Lógica de Proposiciones Leyes de Identidad ( p v f ) ≡ f ( p v t ) ≡ p Leyes de la Implicación (p ⇔ q) ≡ (p ⇒ q) ^ (q ⇒ p) (p ⇒ q) ≡ (~q ⇒ ~p) (q ⇒ p) ≡ (~p ⇒ ~q) (p ⇒ q) ≡ (~p v q)

Lógica de Proposiciones Reglas de Inferencias La siguiente implicación lógica se llama Modus Ponens y corresponde a la siguiente inferencia: p ^ ( p ⇒ q ) :: q Ejemplo: p: Estudio p ⇒ q: Si estudio aprobaré Matemáticas q: Entonces, Aprobaré Matemáticas

Lógica de Proposiciones La siguiente implicación lógica se llama Modus Tollens y corresponde a la siguiente inferencia: ( p ⇒ q ) ^ ~q :: ~p Ejemplo: p ⇒ q: Si estudio apruebo Matemáticas ~q: No aprobé Matemáticas ~p: Entonces, no Estudié

Lógica de Proposiciones La siguiente implicación lógica se llama Silogismo Hipotético y corresponde a la siguiente inferencia: ( p ⇒ q ) ^ ( q ⇒ r ) :: ( p ⇒ r ) Ejemplo: p ⇒ q: Si estudio apruebo Matemáticas q ⇒ r: Si apruebo Matemáticas me regalan un auto p ⇒ r: Entonces, Si estudio me regalan un auto

Lógica de Proposiciones La siguiente implicación lógica se llama Silogismo Disyuntivo y corresponde a la siguiente inferencia: ( p v q ) ^ ~p :: q Ejemplo: p v q: Hay que estudiar Francés o Alemán ~p: No estudio Francés q: Entonces, Estudio Alemán

Lógica de Proposiciones La simplificación conjuntiva consiste en eliminar uno de los términos de una conjunción: ( p ^ q ) :: q o también: ( p ^ q ) :: p Por el otro lado, la amplificación disyuntiva permite agregar un nuevo término: p :: ( p v q )

Lógica en Wumpus Se tiene que: E2: B11 ⇔ P12 v P21 E3: ~ B11 Por lo que tenemos el siguiente razonamiento: E4: (B11 ⇒ (P12 v P21)) ^ ((P12 v P21) ⇒ B11) E5: ((P12 v P21) ⇒ B11) E6: ~B11 ⇒ ~(P12 v P21) E7: ~(P12 v P21) E8: ~P12 ^ ~P21

Lógica en Wumpus Del razonamiento anterior concluimos que no hay un pozo en la casilla (1,2) ni en la (2,1). Ahora veamos el razonamiento cuando el agente llega a la celda (1,2). E9: ~B12 E10: B12 ⇔ P11 v P13 v P22 E12: ~P22

Lógica en Wumpus Concluimos que no hay pozo ni en la casilla (1,3) ni en la (2,2). E11: ~P13 E12: ~P22 Pero cuando el agente visitó la celda (2,1) percibió una brisa: E13: B21 E14: B21 ⇔ P11 v P31 v P22

Lógica en Wumpus Dado que ya verificamos que no hay pozo en las celdas (1,1) y (2,2), resulta evidente la conclusión que: E15: P31 Es conveniente que nuestra base de conocimiento esté basada solamente en conjunciones y disyunciones.

( p11 v … v p1k ) ^ … ^ ( pn1 v … v pnk ) Lógica Proposicional Cualquier enunciado compuesto puede ser transformado a uno equivalente que esté en la FNC La Forma Normal Conjuntiva es la conjunción de n disyunciones de k elementos: ( p11 v … v p1k ) ^ … ^ ( pn1 v … v pnk )

Lógica Proposicional A continuación se describe un procedimiento para convertir a nuestra FNC: Eliminar ⇔ usando la equivalencia: (p ⇔ q) ≡ (p ⇒ q) ^ (q ⇒ p) Eliminar ⇒ usando la equivalencia: (p ⇒ q) ≡ (~p v q)

Lógica Proposicional Simplificar ~ usando las equivalencias: ~( ~p ) ≡ p ~( p v q ) ≡ ~p ^ ~q ~( p ^ q ) ≡ ~p v ~q Finalmente, aplicar la ley distributiva donde sea necesario. p v ( q ^ r ) ≡ ( p v q ) ^ ( p v r )

Lógica Proposicional E2: B11 ⇔ (P12 v P21) (B11 ⇒ (P12 v P21)) ^ ((P12 v P21) ⇒ B11 ) (~B11 v P12 v P21) ^ (~(P12 v P21) v B11 ) (~B11 v P12 v P21) ^ ((~P12 ^ ~P21) v B11 ) (~B11 v P12 v P21) ^ (~P12 v B11) ^ (~P21 v B11)

Lógica Proposicional Para demostrar que una implicación BC :: α es válida, se utiliza el método de reducción al absurdo. Esto es, probar que su negación: BC ^ ~α es una contradicción. Para ello se lleva a la FNC y luego se prueba que es equivalente a una cláusula vacía.

Lógica Proposicional Probar que: E2 ^ E4 :: ~P12. (B11 ⇔ (P12 - P21)) ^ ~B11 :: ~P12 Se convierte a FNC: (~B11 v P12 v P21) ^ (~P12 v B11) ^ (¿P21 v B11) ^ ~B11 :: ~P12

Lógica Proposicional Y para probar por reducción al absurdo, tenemos la negación: (~B11 v P12 v P21) ^ (~P12 v B11) ^ (~P21 v B11) ^ ~B11 ^ P12 El proceso de simplificación funciona como sigue: Si tomamos los primeros dos paréntesis, observamos que contienen a: ~B11 y B11, respectivamente.

Lógica Proposicional Como no pueden ser ambos verdaderos simultáneamente, entonces, o (P12 v P21) o bien (~P12 ) son verdaderos, lo que se reduce a la siguiente expresión: (P12 v P21 v ~P12) Como (P12 v ~P12 ) es una tautología, la expresión anterior se reduce a: (P21)

Lógica Proposicional Similarmente, los dos paréntesis siguientes, también contienen a: ~B11 y B11, por lo que la expresión simplificada queda: (~P21) Como ambas no pueden ser verdaderas, la conjunción resulta en una expresión nula.

Ejercicios ( p ⇒ q ) ^ ( q ⇒ r ) p ^ ( p ⇒ q ) ((p ^ q) ⇔ (p v ~q)) ((~(p ⇒ q) ^ r ) v ~(p ⇔ ~q))

Lógica de Predicados Hay que aprovechar la característica declarativa y la composicionalidad de la lógica proposicional. Para ello definimos dos tipos de elementos: Los objetos (Agente, Flecha, Wumpus, Pozo) Las relaciones entre ellos, generalmente vinculadas por un verbo. El Agente lanzó una Flecha

Lógica de Predicados Las relaciones unitarias también se conocen como Propiedades y se vincula un objeto con una característica por el verbo SER: La Pelota es roja. Las Funciones son un tipo especial de relación que involucra un solo objeto y devuelven un valor: El padre de Uno más que

Lógica de Predicados Uno sumado a Dos es igual a Tres Objetos: Uno, Dos y Tres. Relación: es igual a. Función: sumado a; el resultado es un objeto, llamado: Uno sumado a Dos. Las Casillas que rodean al Wumpus apestan. Objetos: Casillas y Wumpus. Relación: que rodean al. Propiedad: apestan.

Lógica de Primer Orden La lógica de primer orden se construye sobre: Hechos, Objetos y Relaciones. La lógica de primer orden es universal porque puede expresar cualquier cosa que pueda ser programada. El dominio de un modelo es el conjunto de objetos que contiene.

Lógica de Primer Orden Una relación binaria es un conjunto de pares ordenados. Por ejemplo, si Hugo, Paco y Luis son hermanos se denota así: H = { (Hugo, Paco), (Hugo, Luis), (Paco, Luis), Por ejemplo, si Pepe es el padre de Hugo, Paco y Luis, tenemos entonces:

Lógica de Primer Orden Padre_de(Hugo) → Pepe Padre_de(Paco) → Pepe Padre_de(Luis) → Pepe Padre_de(Pepe)  ? A continuación se muestra la gramática de la LPO en BNF.

Lógica de Primer Orden Los símbolos se agrupan en tres clases: Símbolos de constante, que representan a los Objetos. Cada símbolo constante nombra a exactamente un objeto en el mundo, no todos los objetos necesitan tener nombres y algunos pueden tener más de un nombre. Ejemplo: Juan, Casa, Wumpus.

Lógica de Primer Orden Símbolos de predicado, que representan a las Relaciones. Ejemplos: Vecino, Hermano, … Símbolos de función. Ejemplos: Coseno, Padre_de, Oficina_de Los símbolos de predicado y de función tienen una Aridad que establece el número de argumentos.

Lógica de Primer Orden 〈Enunciado〉 → 〈Sentencia Atómica〉 | (〈Enunciado〉〈Conector〉〈Enunciado〉) | 〈Cuantificador〉〈Variable〉…〈Enunciado〉 | ~〈Sentencia〉 〈Sentencia Atómica〉 → 〈Predicado〉(〈Término〉…) | 〈Término〉 = 〈Término〉 〈Término〉 → 〈Función〉(〈Término〉…) | 〈Constante〉| 〈Variable〉

Lógica de Primer Orden 〈Conector〉 → . | - | ⇔ | ⇒ 〈Cuantificador〉 → ∀ | ∃ 〈Constante〉 → Martin | 59302 | Gato | X | … 〈Variable〉 → a | x | s | … 〈Predicado〉 → Previo | Gusta | Llueve | Falla | … 〈Función〉 → Padre_de | Cabello_de | Oficina_de | …

Lógica de Primer Orden Un término es una expresión lógica que se refiere a un objeto. Los símbolos constantes son términos Los símbolos de función son términos. Las variables también son términos. Una sentencia atómica está formada por un símbolo predicado seguido por una lista entre paréntesis de términos.

Lógica de Primer Orden Por ejemplo: Hermano(Roberto,Juan) indica que Roberto es el hermano de Juan. Las sentencias atómicas pueden tener argumentos que son términos complejos: Casado(Padrede(Roberto),Madrede(Juan)) Se pueden usar conectores lógicos para construir sentencias más complejas.

Lógica de Primer Orden Ejemplo: Hermano(Roberto,Juan) ∧ Hermano(Juan,Roberto) Es verdadero si Juan y Roberto son hermanos, pues la relación es simétrica. Los cuantificadores nos permiten expresar propiedades de colecciones de objetos.

Lógica de Primer Orden Hay dos cuantificadores en lógica de primer orden: universal y existencial. Cuando un enunciado abarca a todos los posibles valores del dominio de una variable, entonces se emplea el Cuantificador Universal, que se denota por ∀. El cual se enuncia con frases similares a: “Para todos …”, “Todos …” Ejemplo: Todos los gatos son mamíferos.

Lógica de Primer Orden Esta proposición es falsa si al menos un solo valor de la variable no satisface al enunciado. La representación simbólica es: ∀x Gato(x) ⇒ Mamifero(x) Sin embargo, mucha gente cae en el error de interpretarla como: ∀x Gato(x) ∧ Mamifero(x)

Lógica de Primer Orden Aparentemente son equivalentes, pero esta segunda forma es más fuerte que la anterior, pues la primera será verdadera cuando el antecedente es falso (v.gr. x es un perro) Cuando un enunciado indica que al menos uno de los posibles valores del dominio de una variable, entonces se emplea el Cuantificador Existencial, el cual se denota por ∃.

Lógica de Primer Orden Y se enuncia con frases similares a: “Hay ...” o “Existe ...” o “Para algunos ...” Ejemplo: En mi clase hay mujeres. Esta proposición es falsa si no existe ningún valor de la variable que satisfaga al enunciado. La representación simbólica es: ∃x Alumnodemiclase(x) ∧ Mujer(x)

Lógica de Primer Orden Semejante al caso anterior, mucha gente cae en el error de interpretarla como: ∃x Alumnodemiclase(x) ⇒ Mujer(x) Pero esta segundo enunciado es más débil que el anterior y sería verdadero para los estudiantes que no están en mi clase. Se pueden realizar afirmaciones muy complejas si se anidan cuantificadores.

Lógica de Primer Orden Sin mezclar tipos de cuantificadores, podemos decir cosas como: ∀x,y Hermano(x,y) ⇒ Hermano(y,x) También podemos mezclar cuantificadores, ∀x ∃y Buenopara(x,y) “Todos somos buenos para alguna cosa" ∃y ∀x Buenopara(x,y) “Alguien es bueno para todo"

Lógica de Primer Orden Se pueden cambiar los cuantificadores mediante la negación. Considerar la sentencia: ∀x ~Gusta(x,Verduras) “Para todo x, x no le gustan las verduras." Es equivalente a decir: “No existe un x que le gusten las verduras.“ ~∃x Gusta(x, Verduras)

Lógica de Primer Orden Similarmente, los siguientes enunciados son equivalentes: ∃x P = ~∀x ~P ∀x P = ~∃x ~P ~∀x P = ∃x ~P ∀x ~P = ~∃x P Con frecuencia el símbolo de igualdad se incluye como un símbolo especial.

Lógica de Primer Orden Ejemplo: Padre(Juan) = José Afirmar que el objeto que es padre de Juan es el mismo que el objeto José. Los axiomas capturan los hechos básicos acerca de un dominio. Ejemplos: ∀x,y Padre(x,y) ⇔ Hijo(y,x) ∀x,y Abuelo(x,y) ⇔ ∃z Padre(x,z) . Padre(z,y) ∀x Masculino(x) ⇔ ~Femenino(x)

Lógica de Primer Orden Algunos axiomas son considerados como Definiciones. Los axiomas son luego usados para probar teoremas. FOL en Wumpus: El primer paso es definir la interface entre el agente y el mundo.

FOL Wumpus Un ejemplo de percepción sería: Percepción([Hedor,Brisa,Brillo,Nada,Nada],5) El vector de percepciones contiene 5 elementos que son: Hedor, Brisa, Brillo, Golpe con un muro y Grito. Además incluye un sexto elemento para el tiempo. Las acciones posibles del agente pueden ser las siguientes:

FOL Wumpus Girar(Derecha) Girar(Izquierda) Avanzar Disparar Tomar Para determinar cuál es la mejor acción, el agente realiza una petición como esta: PREGUNTAR(BC, ∃x MejorAcción(x,5))

FOL Wumpus Esta petición retornará una lista de acciones posibles, tal como: {a/Tomar}. Antes de realizar esa acción, el agente deberá DECIR a la base de conocimiento su decisión de hacer la acción de Tomar: DECIR(BC, Acción(5)=Tomar) Reglas de diagnóstico: nos llevan de los efectos observados a sus causas.

FOL Wumpus Por ejemplo: si una casilla tiene brisa significa que una casilla adyacente tiene un pozo. ∀x Brisa(x) ⇒ ∃y Adyacente(y,x) ∧ Pozo(y) Reglas Causales: reflejan conclusiones respecto de las percepciones y sus causas. Por ejemplo: un pozo en una casilla provoca brisa en todas las casillas adyacentes. ∀y Pozo(y) ⇒ [∀x Adyacente(x,y) ⇒ Brisa(x)]

Lógica de Primer Orden La Ingeniería del Conocimiento es un proceso general para la construcción de una base de conocimiento. A continuación se describen los pasos de este proceso: Identificación de la tarea. Recopilación del conocimiento. Decidir el vocabulario. Codificar el conocimiento.

Deducción Automática Para el hecho: Contrata(Telmex,Toño), podemos construir índices para las siguientes peticiones: Contrata(Telmex,Toño) ¿Contrata Telmex a Toño? Contrata(x,Toño) ¿Quién Contrata a Toño? Contrata(Telmex,y) ¿A quién Contrata Telmex? Contrata(x,y) ¿Quién Contrata a quién?

Deducción automática El primer paso consiste en transformar los enunciados en sentencias lógicas. Posteriormente se aplican las técnicas anteriores para convertirlas en un conjunto de cláusulas positivas de primer orden. Luego se encadenan esos conocimientos para obtener nuevos enunciados.

Deducción Automática Pasar a FNC la siguiente base de conocimientos: Asterix es un galo Los romanos que son amigos de algún galo odian a César Asterix ayudó a Marco Marco es amigo de quien le ayuda Quien odia a algún romano, lucha contra él Marco es romano

Deducción Automática Asterix es un galo galo(Asterix) (en FNC) Los romanos que son amigos de algún galo odian a César ∀x [romano(x) . (∃y galo(y) . amigo(x, y)) ⇒ odia(x,Cesar)]

Deducción Automática Reemplazando la cláusula existencial: ∀x [romano(x) . (galo(G) . amigo(x, G)) ⇒ odia(x,Cesar)] Asterix ayudó a Marco ayuda(Asterix,Marco) (en FNC) Marco es amigo de quien le ayuda ∀x [ayuda(x,Marco) ⇒ amigo(Marco, x)]

Deducción Automática Quien odia a algún romano, lucha contra él ∀x ∃y [romano(y) . odia(x, y) ⇒ lucha(x, y)] Reemplazando la cláusula existencial: ∀x [romano(R) . odia(x, R) ⇒ lucha(x, R)] Marco es romano romano(Marco) (en FNC)

Deducción Automática Los Miembros del equipo de tenis son: Juan, Sara, Beto y Elena. Juan está casado con Sara. Beto es hermano de Elena. El cónyuge de un miembro del equipo también es miembro del equipo.

Deducción Automática La última reunión fue en casa de Juan. Representar los enunciados anteriores en lógica de predicados. Demostrar que: La última reunión fue en casa de Sara. Elena no está casada. Agregue los hechos que necesite para las demostraciones.

Deducción Automática A Paco le gustan los cursos fáciles. Los cursos de Física son difíciles. Los cursos de Humanidades son fáciles. El curso de Ética es del área de Humanidades. ¿Qué curso le gustaría tomar a Paco?

Deducción Automática A Beto le gusta la comida italiana. En un restaurante hay comida mexicana a no ser que se anuncie explícitamente lo contrario. En “La Conchita” no anuncian que tipo de comida sirven.

Deducción Automática A las personas no les gusta ir a restaurantes donde sirven comida que no es de su preferencia. ¿Se puede concluir que a Beto no le gusta ir a “La Conchita”?

Deducción Automática Formaliza los siguientes hechos: Todo dragón está feliz si todos sus hijos pueden volar. Los dragones verdes pueden volar. Un dragón es verde si es hijo de al menos un dragón verde. Demuestra por resolución que la conjunción de los hechos anteriores implica que: Todos los dragones verdes son felices.

Deducción Automática Considere las siguientes relaciones: Feliz(x) para x es feliz. Volar(x) para x puede volar. Verde(x) para x es verde. Dragón(x) para x es dragón Rojo(x) para x es rojo. Hijo(x,y) para x es hijo de y.

Sistemas de Deducción Los sistemas de deducción pueden variar dependiendo del problema pero en general se utiliza el método de resolución visto en la unidad pasada. Los lenguajes utilizados en IA como LISP y PROLOG tienen su propio motor de inferencia y están sujetos a reglas muy particulares.

Sistemas de Deducción ¿Cuál es la diferencia entre un hecho y una afirmación? Un hecho es algo que se considera verdadero, una afirmación es una proposición afirmativa que necesita ser demostrada. Ejemplos de reglas para identificar animales:

Sistemas de Deducción Z1 Si X tiene pelo entonces X es mamífero Z2 Si X da leche entonces X es mamífero Z3 Si X tiene plumas entonces X es ave Z4 Si X vuela y X come carne entonces es mamífero Z5 Si X es mamífero y X come carne entonces X es carnívoro

Sistemas de Reacción Los sistemas de reacción permite inferir conocimiento a través de una concatenación de reglas, las cuales pueden ser Progresivas o Regresivas. Los sistemas de reacción tratar de anclar consecuentes con antecedentes de las reglas teniendo así sistemas más inteligentes. Los sistemas de reacción implican la ejecución de acciones.

Sistemas Reacción B1 Si el paso es la verificación de la orden Papas fritas se van a empacar No se va a empacar Pepsi Entonces pregunte al cliente si no le gustarían llevar una botella de Pepsi. Otras reglas por definir son eliminar y añadir elementos.

Encadenamiento Progresivo y Regresivo El encadenamiento de reglas puede ser hacia adelante. En ésta, se inicia con cláusulas atómicas de la base de conocimiento. Luego se aplica el modus Ponens Generalizado hacia delante hasta que ya no se puedan obtener nuevas cláusulas atómicas. Las inferencias realizadas son de la forma: Situación ⇒ Respuesta

Encadenamiento Progresivo o Regresivo Reglas: R1: si A entonces B. R2: si B entonces C. R3: si C entonces Z Hechos: H1: A (dato de partida) H3: Z (objetivo a alcanzar)

Encadenamiento Progresivo y Regresivo En el encadenamiento regresivo se aplica todo lo contrario; es decir, dado un objetivo se pretende llegar al hecho para dar una solución a un problema. El encadenamiento regresivo o backtracking permite regresar a una opción anterior en caso de que existieran varios encadenamientos de regla que no llevan a la resolución

Modelamiento Cognitivo Los sistemas basados en reglas pueden verse como sustratos, de esta forma se puede tener una forma de introspección del como obtuvieron la deducción; es decir, muestran como se formaron las reglas. Los sistemas basados en reglas se les conoce como sabios idiotas, ya que sólo respondan a preguntas fáciles y carecen de muchas de las características del experto del dominio.

Modelos para la Resolución de Problemas Los sistemas basados en reglas pueden funcionar como sistemas de producción. Siendo sistemas de producción pueden utilizarse para generar nuevo conocimiento de las reglas ya existentes.

PROLOG Hechos: las aves vuelan los pingüinos no vuelan "pichurri" es un ave "sandokan" es un perro "alegría" es un ave

PROLOG Reglas o Restricciones: una mascota vuela si es un ave y no es un pingüino Preguntas ¿ "pichurri" vuela ? ¿ qué mascotas vuelan ?

PROLOG Términos: constantes (a), variables (X), funciones (f(X, Y )) pepe, juan, Cliente, cliente-de(X, Y ) Fórmulas atómicas: predicados definidos sobre términos tipo-cliente(X,bueno)

PROLOG Fórmulas bien formadas (wff): fórmulas atómicas unidas por conectivas (^, _,!, ¬) y cuantificadas (1A universal, 1B existencial) 1AX, 1BZ cliente(X) ^ compra(X, Z) ^ caro(Z)  tipo-cliente(X, bueno) abuelo(X,Y) :- padre(X,Z), padre(Z,Y). 1AX, Y 1BZ padre(X, Z) ^ padre(Z, Y)  abuelo(X, Y )

PROLOG abuelo(X,Y) :- padre(X,Z), madre(Z,Y). abuelo(X,Y) :- padre(X,Z), padre(Z,Y). abuelo(X, Y) = {(pepe, juan), (pepe, ana), … , (luis, javier)} progenitor(X, Y ) :- padre(X, Y ). progenitor(X, Y ) :- madre(X, Y ).

PROLOG abuelo(X,Y) :- padre(X,Z), madre(Z,Y). abuelo(X,Y) :- padre(X,Z), padre(Z,Y). abuelo(X,Y) :- padre(X,Z), progenitor(Z,Y). hechos: A. (A átomo) reglas: A :- A1, ..., An. (n>0, y A, A1, ..., An átomos)

PROLOG Hechos: padece(jon, gripe). padece(jon, hepatitis). padece(ana, gripe). padece(carlos, alergia). es-síntoma(fiebre, gripe). es-síntoma(cansancio, gripe). es-síntoma(estornudos, alergia). suprime(paracetamol, fiebre). suprime(antihistamínico, estornudos).

PROLOG Reglas: Preguntas: debe-tomar(Per, Far) :- padece(Per, Enf), alivia(Far, Enf). alivia(Far, Enf) :- es-síntoma(Sin, Enf), suprime(Far, Sin). Preguntas: ? padece(carlos, gripe). ? padece(jon, Z). ? alivia(paracetamol, gripe).

PROLOG ¿Qué devuelve cada pregunta como resultado? ? alivia(X, gripe). ? debe-tomar(Y, antihistamínico). ? alivia(X, Y). ? suprime(X, fiebre), suprime(X, estornudos). ¿Qué devuelve cada pregunta como resultado?

PROLOG hija (*A, *B) <- mujer (*A), padre (*B, *A). hija (*A, *B) <- mujer (*A), madre (*B, *A). A continuación se muestra un programa completo en PROLOG: %% declaraciones padrede('juan', 'maria'). padrede('pablo', 'juan').

PROLOG padrede('pablo', 'marcela'). padrede('carlos', 'debora'). %%Reglas % A es hijo de B si B es padre de A hijode(A,B) :- padrede(B,A). abuelode(A,B) :- padrede(A,C), padrede(C,B). hermanode(A,B) :- padrede(C,A) , padrede(C,B), A \== B. familiarde(A,B) :- padrede(A,B).

PROLOG familiarde(A,B) :- hijode(A,B). familiarde(A,B) :- hermanode(A,B). %% consultas % juan es hermano de marcela? ?- hermanode('juan', 'marcela'). Yes ?- hermanode('carlos', 'juan'). No ?- abuelode('pablo', 'maria'). Yes ?- abuelode('maria', 'pablo'). no

PROLOG %unificación con evaluación. ?- X is 3+5. X = 8 %unificación simbólica ?- X = 3+5. X = 3+5

PROLOG %comparación con evaluación ?- 3+5 =:= 2+6. yes %comparación simbólica. ?- 3+5 == 2+6. no ?- 3+5 == 3+5.

PROLOG Los programas en PROLOG se definen a través de Algoritmos, Lógica y Control. En caso de que una consulta de más de un resultado, el prompt no aparece en la shell. Se puede utilizar el operador . Para terminar el resultado, o bien, el operador ; para continuar con los emparejamientos de resultados. Se pueden combinar preguntas para obtener respuestas más exactas.

PROLOG %Combinación de preguntas legusta(pepe, pesca). legusta(maria, bailar). legusta(ana, pesca). legusta(pepe, musica). legusta(maria, musica). legusta(ana, bailar). %preguntas

PROLOG ¿Le gusta la música a Pepé y a María? ?_ legusta(pepe,musica), legusta(maria, musica). ¿Le gusta bailar a Pepé o le gusta la música a maria? ?_ legusta(pepe,bailar); legusta(maria, musica). ¿Le gusta bailar a Pepé y a maria no le gusta la música? legusta(pepe,bailar), not(legusta(maria,musica)).

PROLOG El portal de redes sociales de la UVAQ desea diseñar un Sistema Experto para encontrar la pareja ideal de cada estudiante si es que existiere. Para lograr esto, se tienen en la base de conocimientos registrados los gustos de cada usuario (color de ojos, altura, complexión, carro, etc.). Se da un punto por cada coincidencia. Diseñar la regla o reglas que determinen la mejor pareja de cada usuario. (Se deben tener al menos 2 hombres y 2 mujeres con 5 gustos c/u).

PROLOG Se puede aplicar recursividad en PROLOG además de que algunos programas en programación estructurada pueden ser implementados. %Sucesiones sucesor(1,2). sucesor(2,3). sucesor(3,4). sucesor(4,5). sucesor(5,6).

PROLOG sucesor(6,7). suma(1,X,R):-sucesor(X,R). suma(N,X,R):-sucesor(M,N), suma(M,X, R1), sucesor(R1, R). %Como se crearía una consulta? %¿Qué es lo que el programa haría?

PROLOG Una lista es una secuencia lineal de objetos en donde todas las manipulaciones se hacen del lado izquierdo de la lista. La lista vacía se representa []. Una lista que no es vacía debe contener al menos dos elementos, uno del lado izquierdo y otro del lado derecho. Ejemplo: [X | Y], [X, Y | Z].

PROLOG agregar([], L, L). agregar([A|R], L, [A|T]):-agregar(R, L, T). %Como se realiza la consulta? ?- agregar([1,2,3 | [] ], [1, 5,7 | [] ], R). Dos predicados com el mismo nombre pero diferente aridad (numero de argumentos) son diferentes.

PROLOG %Programa aridad ama(juan). ama(pepe, maria). La unificación es el proceso en el cual uma variable toma un valor. Cuando una variable tiene un valor, este no cambia.

PROLOG Dos términos se ejecutan cuando existe una posible ligadura en sus variables y en sus valores. Ejemplo: a(X, 3) = a(2, Y). edad(luis,25). edad(hugo,32). edad(paco,29). edad(jaime,67). edad(laura,85). es_viejo(Persona) :- edad(Persona,Valor), valor > 60.

Ejercicio padre(X,Y) – X es padre de Y madre(X,Y) – X es madre de Y es_padre(X) – X es un padre es_madre(X) – X es una madre es_hijo(X) – X es un hijo (hombre) hermana(X,Y) – X es hermana de Y abuelo(X,Y) – X es abuelo (hombre) de Y tia(X,Y) – X es tía de Y primo(X,Y) – X es primo (hombre) de Y

PROLOG Prolog tiene la característica de ser reversible; es decir, los argumentos pueden ser de entrada y salida. Si se tiene un predicado abuelo se puede saber quienes son los nietos de ese abuelo. Esto no sucede con los operadores aritméticos. Otro tipo de datos utilizado en Prolog es el registro. El cual es una combinación de elementos.

PROLOG Por ejemplo: persona(‘Eva’, ‘López’, ‘Cárdenas’, 25) Define a una persona teniendo como atributos su nombre, sus apellidos y su edad. Dado que los términos son anidados se pueden tener registros como: Persona(“Helena”, edad(22), dirección(‘Miguel Hidalgo 33’, ‘Centro’, ‘Morelia’))

PROLOG Se pueden utilizar estructuras de datos recurrentes como árboles, en donde el primer elemento podría ser un nodo, el segundo el hijo izquierdo y el tercer elemento, el hijo derecho. arbol(dato1, temp, temp) arbol(dato1, arbol(dato2, temp, temp), temp) En donde temp indica un campo vacío.

PROLOG ¿Qué diferencia existe entre las siguientes listas? M = [0, L]. L = [1, 2, 3, 4, 5], M = [0 | L]. Las listas pueden ser de elementos heterogéneos como: [1, p(a), [a, b], f(g(h))]

PROLOG El predicado member nos permite saber si un elemento existe en la lista ?- member(3, [1,2,3,4,5,6]). %regresa true El método append/3 sirve para concatenar listas ?- append([1,2,3], [a, b, c], X). Las cadenas pueden ser tratadas como listas cuando se escriben con comillas dobles.

PROLOG Por ejemplo la cadena X=“ABC” es equivalente a X=[65, 66, 67]. Los predicados utilizados para listas, también nos sirven para cadenas. La función number_codes/2 convierte un número a cadena. ? number_codes(12, X). % X=[49, 50].

PROLOG La función atom_codes/2 proporciona el código equivalente de una cadena. ?- atom_codes(juan, X). X = [106, 117, 97, 110]. //Comprobación de tipos es_lista([]). es_lista([_|B]):-es_lista(B).

PROLOG ?- es_lista([a]). Existen ya predicados definidos para la comprobación de tipos de datos básicos como: integer/1, float/1, number/1, atom/1, var/1, novar/1, ground/1.

PROLOG % Ejemplo entrada(paella). entrada(gazpacho). entrada(consome). carne(filete_de_cerdo). carne(pollo_asado). pescado(trucha). pescado(bacalao). postre(flan).

PROLOG postre(nueces_con_miel). postre(naranja). calorias(paella, 200). calorias(gazpacho, 150). calorias(consome, 300). calorias(filete_de_cerdo, 400). calorias(pollo_asado, 280). calorias(trucha, 160). calorias(bacalao, 300).

PROLOG calorias(flan, 200). calorias(nueces_con_miel, 500). calorias(naranja, 50). plato_principal(P):- carne(P); pescado(P). comida(Entrada, Principal, Postre):- entrada(Entrada), plato_principal(Principal), postre(Postre). valor(Entrada, Principal, Postre, Valor):- calorias(Entrada, X), calorias(Principal, Y), calorias(Postre, Z), sumar(X, Y, Z, Valor).

PROLOG comida_equilibrada(Entrada, Principal, Postre):- comida(Entrada, Principal, Postre), valor(Entrada, Principal, Postre, Valor), menor(Valor, 800). sumar(X, Y, Z, Res):- Res is X + Y + Z. menor(X, Y):- X < Y. dif(X, Y):- X \==Y.   Encontrar: ¿Cuántas calorías tiene la combinación paella, trucha, naranja? ¿Qué comida que tiene cónsome de entrada es la más balanceada?

PROLOG Se pueden definir funciones recursivas como el factorial: fac(N,F) :- N > 0, M is N - 1, fac(M,Fm), F is N * Fm. ¿Cómo se expresa la serie de fibonnaci?

PROLOG Algo sumamente importante en cualquier lenguaje de programación son las interfaces de E/S y Prolog no es la excepcion. Se cuenta con los predicados read/1 para leer el valor de variables seguidas por un punto y get para leer carácter por carácter regresando el código ASCII correspondiente.

Prolog Para salida estándar se cuenta con las funciones write/1 para cualquier valor, put/1 para colocar un carácter. Adicionalmente se cuenta con las relaciones nl/0 para nueva línea y display/1 para mostrar mensajes en pantalla. A continuación se muestra el ejemplo de un programa que utiliza entrada y salida, así como un manejo estructurado de programa.

PROLOG sumar_lista([],Parcial,Parcial). sumar_lista([Num|Resto],Parcial,Result) :- NParcial is Num+Parcial, sumar_lista(Resto,NParcial,Result). leer_numero(Num) :- read(Num), number(Num).

PROLOG suma :- suma_aux([]). suma_aux(Lista) :- leer_numero(Num), suma_aux([Num|Lista]). suma_aux(Lista) :- sumar_lista(Lista,0,Result), nl, display('LA SUMA ES : '), display(Result), nl.

Referencias Carreón, J. (2007) Material de la Asignatura de Inteligencia Artificial, Universidad Vasco de Quiroga, Morelia, Michoacán, México. Nilsson, N. (2001). Inteligencia Artificial. Una nueva síntesis. McGraw-Hill, España. Russel, S. y Norving, P. (2004). Inteligencia Artificial. Un Nuevo enfoque. Pearson Prentice Hall, España

Questions?