Download - 4.3 Reglas y Programación Lógica
![Page 1: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/1.jpg)
Programación Lógica y Reglas
Lo que es nacido de la carne, carne es; lo que es nacido del Espíritu, espíritu es.
Jesucristo Jn.3.6
![Page 2: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/2.jpg)
Resolución de Primer-Ordenx, P(x) Q(x)
P(A)Q(A)
Letras mayúsculas: constantesLetras minúsculas:variables
Silogismo:Todos los hombres son mortalesSócrates es un hombreSócrates es mortal
x, ¬P(x) v Q(x)P(A)Q(A)
Equivalencia por definición de implicación
¬P(A) v Q(A)P(A)Q(A)
Sustituya A por x, sigue verdaderoEntoncesResolución proposicional
Dos nuevas cosas:
•Convertir LPO a forma clausal
•Resuelva con la sustitución de variables
![Page 3: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/3.jpg)
Sustituciones
![Page 4: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/4.jpg)
SustitucionesP(x, f(y), B) : una sentencia axiomática
![Page 5: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/5.jpg)
SustitucionesP(x, f(y), B) : una sentencia axiomática
Instancias de la sustitución
Sustitución{v1/t1, .., vn/tn}
Comentarios
![Page 6: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/6.jpg)
SustitucionesP(x, f(y), B) : una sentencia axiomática
Instancias de la sustitución
Sustitución{v1/t1, .., vn/tn}
Comentarios
P(z, f(w), B) {x/z, y/w} Variante alfabética
![Page 7: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/7.jpg)
SustitucionesP(x, f(y), B) : una sentencia axiomática
Instancias de la sustitución
Sustitución{v1/t1, .., vn/tn}
Comentarios
P(z, f(w), B) {x/z, y/w} Variante alfabética
P(x, f(A), B) {y/a}
![Page 8: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/8.jpg)
SustitucionesP(x, f(y), B) : una sentencia axiomática
Instancias de la sustitución
Sustitución{v1/t1, .., vn/tn}
Comentarios
P(z, f(w), B) {x/z, y/w} Variante alfabética
P(x, f(A), B) {y/a}
P(g(z), f(A), B) {x/g(z), y/A}
![Page 9: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/9.jpg)
SustitucionesP(x, f(y), B) : una sentencia axiomática
Instancias de la sustitución
Sustitución{v1/t1, .., vn/tn}
Comentarios
P(z, f(w), B) {x/z, y/w} Variante alfabética
P(x, f(A), B) {y/a}
P(g(z), f(A), B) {x/g(z), y/A}
P(C, f(A), B) {x/C, y/A} Motivo de la instancia
![Page 10: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/10.jpg)
SustitucionesP(x, f(y), B) : una sentencia axiomática
Instancias de la sustitución
Sustitución{v1/t1, .., vn/tn}
Comentarios
P(z, f(w), B) {x/z, y/w} Variante alfabética
P(x, f(A), B) {y/a}
P(g(z), f(A), B) {x/g(z), y/A}
P(C, f(A), B) {x/C, y/A} Motivo de la instancia
Aplicando una sustitución:P(x, f(y), B) {y/A} = P(x, f(A), B)P(x, f(y), B) {y/A, x/y } = P(A, f(A), B)
![Page 11: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/11.jpg)
Unificación Las expresiones 1 y 2 son unificables ssi
existe una sustitución x tal que 1 s = 2 s
![Page 12: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/12.jpg)
Unificación Las expresiones 1 y 2 son unificables ssi existe
una sustitución x tal que 1 s = 2 s Sea 1 = x y 2 = y las siguientes son unificadores
s 1 s 2 s
![Page 13: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/13.jpg)
Unificación Las expresiones 1 y 2 son unificables ssi existe
una sustitución x tal que 1 s = 2 s Sea 1 = x y 2 = y las siguientes son unificadores
s 1 s 2 s{y/x} x x
![Page 14: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/14.jpg)
Unificación Las expresiones 1 y 2 son unificables ssi existe
una sustitución x tal que 1 s = 2 s Sea 1 = x y 2 = y las siguientes son unificadores
s 1 s 2 s{y/x} x x{x/y} y y
![Page 15: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/15.jpg)
Unificación Las expresiones 1 y 2 son unificables ssi existe
una sustitución x tal que 1 s = 2 s Sea 1 = x y 2 = y las siguientes son unificadores
s 1 s 2 s{y/x} x x{x/y} y y{x/f(f(A)), y/f(f(A))} f(f(A)) f(f(A))
![Page 16: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/16.jpg)
Unificación Las expresiones 1 y 2 son unificables ssi existe
una sustitución x tal que 1 s = 2 s Sea 1 = x y 2 = y las siguientes son unificadores
s 1 s 2 s{y/x} x x{x/y} y y{x/f(f(A)), y/f(f(A))} f(f(A)) f(f(A)){x/A, y/A} A A
![Page 17: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/17.jpg)
Unificador más general
![Page 18: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/18.jpg)
Unificador más general g es un unificador más general de 1 y 2 ssi para
todo unificador s, existe s´ tal que 1 s = (1 g) s´ y 2 s= (2 g) s´
![Page 19: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/19.jpg)
Unificador más general g es un unificador más general de 1 y 2 ssi para
todo unificador s, existe s´ tal que 1 s = (1 g) s´ y 2 s= (2 g) s´
1 2 UMG
P(x) P(A) {x/A}
![Page 20: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/20.jpg)
Unificador más general g es un unificador más general de 1 y 2 ssi para
todo unificador s, existe s´ tal que 1 s = (1 g) s´ y 2 s= (2 g) s´
1 2 UMG
P(x) P(A) {x/A}P(f(x), y, g(x)) P(f(x), x, g(x)) {y/x} o{x/y}
![Page 21: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/21.jpg)
Unificador más general g es un unificador más general de 1 y 2 ssi para
todo unificador s, existe s´ tal que 1 s = (1 g) s´ y 2 s= (2 g) s´
1 2 UMG
P(x) P(A) {x/A}P(f(x), y, g(x)) P(f(x), x, g(x)) {y/x} o{x/y}P(f(x), y, g(y)) P(f(x), z, g(x)) {y/x, z/y}
![Page 22: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/22.jpg)
Unificador más general g es un unificador más general de 1 y 2 ssi para
todo unificador s, existe s´ tal que 1 s = (1 g) s´ y 2 s= (2 g) s´
1 2 UMG
P(x) P(A) {x/A}P(f(x), y, g(x)) P(f(x), x, g(x)) {y/x} o{x/y}P(f(x), y, g(y)) P(f(x), z, g(x)) {y/x, z/y}P(x, B,B) P(A, y, z) {x/A, y/B, z/B}
![Page 23: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/23.jpg)
Unificador más general g es un unificador más general de 1 y 2 ssi para
todo unificador s, existe s´ tal que 1 s = (1 g) s´ y 2 s= (2 g) s´
1 2 UMG
P(x) P(A) {x/A}P(f(x), y, g(x)) P(f(x), x, g(x)) {y/x} o{x/y}P(f(x), y, g(y)) P(f(x), z, g(x)) {y/x, z/y}P(x, B,B) P(A, y, z) {x/A, y/B, z/B}P(g(f(v)), g(u)) P(x, x) {x/g(f(v)), u/f(v)}
![Page 24: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/24.jpg)
Unificador más general g es un unificador más general de 1 y 2 ssi para
todo unificador s, existe s´ tal que 1 s = (1 g) s´ y 2 s= (2 g) s´
1 2 UMG
P(x) P(A) {x/A}P(f(x), y, g(x)) P(f(x), x, g(x)) {y/x} o{x/y}P(f(x), y, g(y)) P(f(x), z, g(x)) {y/x, z/y}P(x, B,B) P(A, y, z) {x/A, y/B, z/B}P(g(f(v)), g(u)) P(x, x) {x/g(f(v)), u/f(v)}P(x, f(x)) P(x, x) No es UMG!
![Page 25: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/25.jpg)
Algoritmo de unificaciónunificar(Expr x, Expr y, Subst a) {
![Page 26: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/26.jpg)
Algoritmo de unificaciónunificar(Expr x, Expr y, Subst a) {
Si a= falla, retorne fallade lo contrario si x= y, retorne a
![Page 27: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/27.jpg)
Algoritmo de unificaciónunificar(Expr x, Expr y, Subst a) {
Si a= falla, retorne fallade lo contrario si x= y, retorne ade lo contrario si x es una variable, retorne unify-var(x, y, s)de lo contrario si y es una variable, retorne unify-var(y, x, s)
![Page 28: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/28.jpg)
Algoritmo de unificaciónunificar(Expr x, Expr y, Subst a) {
Si a= falla, retorne fallade lo contrario si x= y, retorne ade lo contrario si x es una variable, retorne unify-var(x, y, s)de lo contrario si y es una variable, retorne unify-var(y, x, s)de lo contrario si x es un predicado o función,
Si y tiene el mismo operador,retorne unify(args(x), args(y), s)
![Page 29: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/29.jpg)
Algoritmo de unificaciónunificar(Expr x, Expr y, Subst a) {
Si a= falla, retorne fallade lo contrario si x= y, retorne ade lo contrario si x es una variable, retorne unify-var(x, y, s)de lo contrario si y es una variable, retorne unify-var(y, x, s)de lo contrario si x es un predicado o función,
Si y tiene el mismo operador,retorne unify(args(x), args(y), s)
De lo contrario retorne falla
![Page 30: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/30.jpg)
Algoritmo de unificaciónunificar(Expr x, Expr y, Subst a) {
Si a= falla, retorne fallade lo contrario si x= y, retorne ade lo contrario si x es una variable, retorne unify-var(x, y, s)de lo contrario si y es una variable, retorne unify-var(y, x, s)de lo contrario si x es un predicado o función,
Si y tiene el mismo operador,retorne unify(args(x), args(y), s)
De lo contrario retorne falla
de lo contrario ; x y y deben ser listasretorne unify(rest(x), rest(y),
unify(primero(x), primero(y), s))
![Page 31: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/31.jpg)
Subrutina Unify-varSustituyendo var y x tanto cuanto posible, entonces agregue una nueva
uniónUnify-var(Variable var, Expr x, Subst s){
![Page 32: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/32.jpg)
Subrutina Unify-varSustituyendo var y x tanto cuanto posible, entonces agregue una nueva
uniónUnify-var(Variable var, Expr x, Subst s){
Si var es unida a val en s,retorne unify(val, x, s)
![Page 33: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/33.jpg)
Subrutina Unify-varSustituyendo var y x tanto cuanto posible, entonces agregue una nueva
uniónUnify-var(Variable var, Expr x, Subst s){
Si var es unida a val en s,retorne unify(val, x, s)
de lo contrario si x es limitado a val en s,retorne unify-var(var, val, s)
![Page 34: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/34.jpg)
Subrutina Unify-varSustituyendo var y x tanto cuanto posible, entonces agregue una nueva
uniónUnify-var(Variable var, Expr x, Subst s){
Si var es unida a val en s,retorne unify(val, x, s)
de lo contrario si x es limitado a val en s,retorne unify-var(var, val, s)
de lo contrario si var ocurre en cualquier lugar en (x, s), retorne fallade lo contrario retorne suma((var/x), s)
}
![Page 35: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/35.jpg)
Algunos ejemplos
1 2 UMG
A(B,C) A(x,y) {x/B, y/C}A(x, f(D,x)) A(E, f(D, y)) {x/E, y/E}A(x, y) A(f(C, y), z) {x/f(C, y), y/z}P(A, x, f(g(y))) P(y, f(z), f(z)) {y/A, x/f(z), z/g(y)}P(x, g(f(A)), f(x)) P(f(y), z, y) ningunoP(x, f(y)) P(z, g(w)) ninguno
![Page 36: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/36.jpg)
Lógica en la práctica Lenguaje de la lógica es extremadamente poderoso Dice que es verdad y no como se usa
x, y ( z Padres (x, z) Padres (z, y)) Abuelos (x, y)Dado padres, encuentre abuelosDado abuelos, encuentre padres
![Page 37: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/37.jpg)
Lógica en la práctica Lenguaje de la lógica es extremadamente poderoso Dice que es verdad y no como se usa
x, y ( z Padres (x, z) Padres (z, y)) Abuelos (x, y)Dado padres, encuentre abuelosDado abuelos, encuentre padres
Pero el probador-de-teoremas de resolución es ineficiente!
Para recobrar viabilidad: Limite el lenguaje Simplifique el algoritmo de prueba
Sistemas basados en reglas Programación Lógica
![Page 38: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/38.jpg)
Cláusulas Horn
Una cláusula es Horn si tiene como máximo un literal positivo
P1 v … v Pn v Q (Regla) Q (Hecho) P1 v … v Pn (restricción consistente)
No se trabajará con restricciones consistentes
![Page 39: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/39.jpg)
Cláusulas Horn Una cláusula es de Horn si tiene como máximo
un literal positivo P1 v … v Pn v Q (Regla) Q (Hecho) P1 v … v Pn (restricción consistente)
No se trabajará con restricciones consistentes Notación de regla
P1 ^ … ^Pn Q (Lógica) If P1 … Pn Then Q (Sistema basado en reglas) Q : - P1, …, Pn (Prolog)
Pj son llamados antecedentes (o cuerpo) Q es llamado consecuente (o cabeza)
![Page 40: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/40.jpg)
Limitaciones
No se puede concluir con negación P Q
No se puede concluir con disyunciones P1 ^ P2 Q1 v Q2
![Page 41: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/41.jpg)
Inferencia: Backchaining
Para “probar” una literal C Poner C y una literal Ans (respuesta) en una pila
![Page 42: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/42.jpg)
Inferencia: Backchaining
Para “probar” una literal C Poner C y una literal Ans (respuesta) en una pila Repita hasta que la pila solo tenga la literal Ans o no
haya acciones disponible. Saque la literal L de la pila
![Page 43: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/43.jpg)
Inferencia: Backchaining
Para “probar” una literal C Poner C y una literal Ans (respuesta) en una pila Repita hasta que la pila solo tenga la literal Ans o no
haya acciones disponible. Saque la literal L de la pila Seleccione una regla ( o hecho) cuyo consecuente
unifique con L Empuje los antecedente ( en orden) en la pila Aplique el unificador a la pila completa Renombre las variables de la pila
![Page 44: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/44.jpg)
Inferencia: Backchaining
Para “probar” una literal C Poner C y una literal Ans (respuesta) en una pila Repita hasta que la pila solo tenga la literal Ans o no
haya acciones disponible. Saque la literal L de la pila Seleccione una regla ( o hecho) cuyo consecuente
unifique con L Empuje los antecedente ( en orden) en la pila Aplique el unificador a la pila completa Renombre las variables de la pila
Si no hace match, falla
![Page 45: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/45.jpg)
Ejemplo1. Padre(A, B) ; hecho2. Madre(B, C) ; hecho3. Abuelo(?x, ?z) :- Padres(?x, ?y), Padres(?y, ?z)4. Padres(?x, ?y) :- Padre(?x, ?y)5. Padres(?x, ?y) :- Madre(?x, ?y)
![Page 46: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/46.jpg)
Ejemplo1. Padre(A, B) ; hecho2. Madre(B, C) ; hecho3. Abuelo(?x, ?z) :- Padres(?x, ?y), Padres(?y, ?z)4. Padres(?x, ?y) :- Padre(?x, ?y)5. Padres(?x, ?y) :- Madre(?x, ?y)• Probar:
• Abuelo(?g, C), Ans(?g)
![Page 47: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/47.jpg)
Ejemplo1. Padre(A, B) ; hecho2. Madre(B, C) ; hecho3. Abuelo(?x, ?z) :- Padres(?x, ?y), Padres(?y, ?z)4. Padres(?x, ?y) :- Padre(?x, ?y)5. Padres(?x, ?y) :- Madre(?x, ?y)• Probar:
• Abuelo(?g, C), Ans(?g)• {3, ?x/?g, ?z/ C; ?y ?y1, ?g ?g1}
• Padres(?g1, ?y1), Padres(?y1, C), Ans (?g1)
![Page 48: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/48.jpg)
Ejemplo1. Padre(A, B) ; hecho2. Madre(B, C) ; hecho3. Abuelo(?x, ?z) :- Padres(?x, ?y), Padres(?y, ?z)4. Padres(?x, ?y) :- Padre(?x, ?y)5. Padres(?x, ?y) :- Madre(?x, ?y)• Probar:
• Abuelo(?g, C), Ans(?g)• {3, ?x/?g, ?z/ C; ?y y1, ?g ?g1}
• Padres(?g1, ?y1), Padres(?y1, C), Ans (?g1)• {4, ?x/?g1, ?y/?y1; ?y1 ?y2, ?g1/?g2
• Padre(?g2, ?y2) , Padres(?y2, C), Ans(?g2)• { 1, ?g2/A, ?y2/B}
![Page 49: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/49.jpg)
Ejemplo1. Padre(A, B) ; hecho2. Madre(B, C) ; hecho3. Abuelo(?x, ?z) :- Padres(?x, ?y), Padres(?y, ?z)4. Padres(?x, ?y) :- Padre(?x, ?y)5. Padres(?x, ?y) :- Madre(?x, ?y)• Probar:
• Abuelo(?g, C), Ans(?g)• {3, ?x/?g, ?z/ C; ?y y1, ?g ?g1}
• Padres(?g1, ?y1), Padres(?y1, C), Ans (?g1)• {4, ?x/?g1, ?y/?y1; ?y1 ?y2, ?g1/?g2
• Padre(?g2, ?y2) , Padres(?y2, C), Ans(?g2)• { 1, ?g2/A , ?y2/B}
• Padres(B, C), Ans(A)
![Page 50: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/50.jpg)
Ejemplo1. Padre(A, B) ; hecho2. Madre(B, C) ; hecho3. Abuelo(?x, ?z) :- Padres(?x, ?y), Padres(?y, ?z)4. Padres(?x, ?y) :- Padre(?x, ?y)5. Padres(?x, ?y) :- Madre(?x, ?y)• Probar:
• Abuelo(?g, C), Ans(?g)• {3, ?x/?g, ?z/ C; ?y y1, ?g ?g1}
• Padres(?g1, ?y1), Padres(?y1, C), Ans (?g1)• {4, ?x/?g1, ?y/?y1; ?y1 ?y2, ?g1/?g2
• Padre(?g2, ?y2) , Padres(?y2, C), Ans(?g2)• { 1, ?g2/A , ?y2/B}
• Padres(B, C), Ans(A)• <falla>
• {5, ?x/B, ?y/C}• Madre(B,C), Ans (A)
![Page 51: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/51.jpg)
Ejemplo1. Padre(A, B) ; hecho2. Madre(B, C) ; hecho3. Abuelo(?x, ?z) :- Padres(?x, ?y), Padres(?y, ?z)4. Padres(?x, ?y) :- Padre(?x, ?y)5. Padres(?x, ?y) :- Madre(?x, ?y)• Probar:
• Abuelo(?g, C), Ans(?g)• {3, ?x/?g, ?z/ C; ?y y1, ?g ?g1}
• Padres(?g1, ?y1), Padres(?y1, C), Ans (?g1)• {4, ?x/?g1, ?y/?y1; ?y1 ?y2, ?g1/?g2
• Padre(?g2, ?y2) , Padres(?y2, C), Ans(?g2)• { 1, ?g2/A , ?y2/B}
• Padres(B, C), Ans(A)• <falla>
• {5, ?x/B, ?y/C}• Madre(B,C), Ans (A)
• {2}• Ans(A)
![Page 52: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/52.jpg)
Árbol de Prueba
1.P(A, B)2. M(B, C)3. A(?x, ?z) :- Ps(?x, ?y), Ps(?y, ?x)4. Ps(?x, ?y) :- P (?x, ?y) 5. Ps(?x, ?y) :- M (?x, ?y)
ProbarA(?g, C), Ans(?g)• Ps(?g1, ?y1), Ps(?y1, C), Ans(?g1)• P(?g2, ?y2), Ps(y2, C), Ans(?g2)• Ps(B,C) Ans(A)• P(B,C), Ans(A)• <Falla>• M(B,C), Ans(A)• Ans(A)
A(?g, C)
Ps(?g, ?y) Ps(?y, C)
P(?g, ?y) M(?g, ?y)P(?y, C)
M(?y, C)
P(A,B) M(B, C) P(A, B) M(B, C)
![Page 53: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/53.jpg)
Árbol de Prueba
1.P(A, B)2. M(B, C)3. A(?x, ?z) :- Ps(?x, ?y), Ps(?y, ?x)4. Ps(?x, ?y) :- P (?x, ?y) 5. Ps(?x, ?y) :- M (?x, ?y)
ProbarA(?g, C), Ans(?g)• Ps(?g1, ?y1), Ps(?y1, C), Ans(?g1)• P(?g2, ?y2), Ps(y2, C), Ans(?g2)• Ps(B,C) Ans(A)• P(B,C), Ans(A)• <Falla>• M(B,C), Ans(A)• Ans(A)
A(?g, C)
Ps(?g, ?y) Ps(?y, C)
P(?g, ?y) M(?g, ?y)P(?y, C)
M(?y, C)
P(A,B) M(B, C) P(A, B) M(B, C)
![Page 54: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/54.jpg)
Árbol de Prueba
1.P(A, B)2. M(B, C)3. A(?x, ?z) :- Ps(?x, ?y), Ps(?y, ?x)4. Ps(?x, ?y) :- P (?x, ?y) 5. Ps(?x, ?y) :- M (?x, ?y)
ProbarA(?g, C), Ans(?g)• Ps(?g1, ?y1), Ps(?y1, C), Ans(?g1)• P(?g2, ?y2), Ps(y2, C), Ans(?g2)• Ps(B,C) Ans(A)• P(B,C), Ans(A)• <Falla>• M(B,C), Ans(A)• Ans(A)
A(?g, C)
Ps(?g, ?y) Ps(?y, C)
P(?g, ?y) M(?g, ?y)P(?y, C)
M(?y, C)
P(A,B) M(B, C) P(A, B) M(B, C)
![Page 55: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/55.jpg)
Árbol de Prueba
1.P(A, B)2. M(B, C)3. A(?x, ?z) :- Ps(?x, ?y), Ps(?y, ?x)4. Ps(?x, ?y) :- P (?x, ?y) 5. Ps(?x, ?y) :- M (?x, ?y)
ProbarA(?g, C), Ans(?g)• Ps(?g1, ?y1), Ps(?y1, C), Ans(?g1)• P(?g2, ?y2), Ps(y2, C), Ans(?g2)• Ps(B,C) Ans(A)• P(B,C), Ans(A)• <Falla>• M(B,C), Ans(A)• Ans(A)
A(?g, C)
Ps(?g, ?y) Ps(?y, C)
P(?g, ?y) M(?g, ?y)P(?y, C)
M(?y, C)
P(A,B) M(B, C) P(A, B) M(B, C)?g/A, ?y/B
![Page 56: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/56.jpg)
Árbol de Prueba
1.P(A, B)2. M(B, C)3. A(?x, ?z) :- Ps(?x, ?y), Ps(?y, ?x)4. Ps(?x, ?y) :- P (?x, ?y) 5. Ps(?x, ?y) :- M (?x, ?y)
ProbarA(?g, C), Ans(?g)• Ps(?g1, ?y1), Ps(?y1, C), Ans(?g1)• P(?g2, ?y2), Ps(y2, C), Ans(?g2)• Ps(B,C) Ans(A)• P(B,C), Ans(A)• <Falla>• M(B,C), Ans(A)• Ans(A)
A(?g, C)
Ps(?g, ?y) Ps(B, C)
P(?g, ?y) M(?g, ?y)P(?y, C)
M(?y, C)
P(A,B) M(B, C) P(A, B) M(B, C)?g/A, ?y/B
![Page 57: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/57.jpg)
Árbol de Prueba
1.P(A, B)2. M(B, C)3. A(?x, ?z) :- Ps(?x, ?y), Ps(?y, ?x)4. Ps(?x, ?y) :- P (?x, ?y) 5. Ps(?x, ?y) :- M (?x, ?y)
ProbarA(?g, C), Ans(?g)• Ps(?g1, ?y1), Ps(?y1, C), Ans(?g1)• P(?g2, ?y2), Ps(y2, C), Ans(?g2)• Ps(B,C) Ans(A)• P(B,C), Ans(A)• <Falla>• M(B,C), Ans(A)• Ans(A)
A(?g, C)
Ps(?g, ?y) Ps(B, C)
P(?g, ?y) M(?g, ?y)P(?y, C)
M(?y, C)
P(A,B) M(B, C) P(A, B) M(B, C)?g/A, ?y/B
![Page 58: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/58.jpg)
Árbol de Prueba
1.P(A, B)2. M(B, C)3. A(?x, ?z) :- Ps(?x, ?y), Ps(?y, ?x)4. Ps(?x, ?y) :- P (?x, ?y) 5. Ps(?x, ?y) :- M (?x, ?y)
ProbarA(?g, C), Ans(?g)• Ps(?g1, ?y1), Ps(?y1, C), Ans(?g1)• P(?g2, ?y2), Ps(y2, C), Ans(?g2)• Ps(B,C) Ans(A)• P(B,C), Ans(A)• <Falla>• M(B,C), Ans(A)• Ans(A)
A(?g, C)
Ps(?g, ?y) Ps(B, C)
P(?g, ?y) M(?g, ?y)P(B, C)
M(?y, C)
P(A,B) M(B, C) P(A, B) M(B, C)?g/A, ?y/B
![Page 59: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/59.jpg)
Árbol de Prueba
1.P(A, B)2. M(B, C)3. A(?x, ?z) :- Ps(?x, ?y), Ps(?y, ?x)4. Ps(?x, ?y) :- P (?x, ?y) 5. Ps(?x, ?y) :- M (?x, ?y)
ProbarA(?g, C), Ans(?g)• Ps(?g1, ?y1), Ps(?y1, C), Ans(?g1)• P(?g2, ?y2), Ps(y2, C), Ans(?g2)• Ps(B,C) Ans(A)• P(B,C), Ans(A)• <Falla>• M(B,C), Ans(A)• Ans(A)
A(?g, C)
Ps(?g, ?y) Ps(B, C)
P(?g, ?y) M(?g, ?y) P(B, C)M(?y, C)
P(A,B) M(B, C) P(A, B) M(B, C)?g/A, ?y/B Falla
![Page 60: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/60.jpg)
Árbol de Prueba
1.P(A, B)2. M(B, C)3. A(?x, ?z) :- Ps(?x, ?y), Ps(?y, ?x)4. Ps(?x, ?y) :- P (?x, ?y) 5. Ps(?x, ?y) :- M (?x, ?y)
ProbarA(?g, C), Ans(?g)• Ps(?g1, ?y1), Ps(?y1, C), Ans(?g1)• P(?g2, ?y2), Ps(y2, C), Ans(?g2)• Ps(B,C) Ans(A)• P(B,C), Ans(A)• <Falla>• M(B,C), Ans(A)• Ans(A)
A(?g, C)
Ps(?g, ?y) Ps(B, C)
P(?g, ?y) M(?g, ?y)P(B, C)
M(B, C)
P(A,B) M(B, C) P(A, B) M(B, C)?g/A, ?y/B Falla
![Page 61: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/61.jpg)
Cómo y por qué?
CONSULTA El sistema esta en este modo cuanto un usuario esta interactuando con él. El usuario interactúa entrando
datos y el sistema responde por medio del motor de inferencia que presenta el razonamiento; involucrado en la derivación la respuesta a la pregunta dada por el usuario. El rol del motor de inferencia es buscar que los hechos dados por el usuario emparejen la parte condicional de la regla. Utiliza la heurística para responder. El siguiente ejemplo es un caso hipotético pero ilustra el accionar típico del sistema.
System: What is the patient's name? User: George Washington System: What is the patient's age? User: 252 years System: Is the patient male or female? User: Male System: What are the symptoms? User: Headache dizziness upset stomach high fever System: When did these symptoms first appear? User: December 13,1799 System: I conclude that the patient has a viral infection , my recommendation is that he should take two
aspirin, drink plenty of fluid, get lots of rest and call me in the morning. George Washington died the next day of a viral infection no antibiotics
![Page 62: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/62.jpg)
EXPLICACIÓN Este modo permite al sistema explicar su conclusión y su proceso de razonamiento. Esta modalidad viene
de la estructura del árbol AND/OR creado durante el proceso de razonamiento. Como un resultado de los sistemas mas expertos pueden responder las siguientes preguntas: Como y Por que?
¿Por qué preguntas eso? [muestra los antecedentes de la regla que esta intentando utlizar] ¿Cómo llegaste esa conclusión? [ guarda la traza de las preguntas y respuestas]
Ilustración del comportamiento del sistema experto en medicina MYCIN. El Mycin ha sido informado que un paciente contrajo meningitis en un hospital. Los doctores desean
interrogar al Mycin para chequear el diagnóstico. El Mycin hace al doctor esta pregunta. Mycin: Es la Meningitis una enfermedad que se adquiere en un hospital? Doctor: Por que? Mycin: [2.0] esto ayudaría a determinar los organismos que podrían esta causando la infección. Hasta ahora se ha establecido. [2.1] la infección que requiere terapia es meningitis [2.2] no fueron vistos organismos en el cultivo de sangre [2.3] el tipo de infección de bacterial [2.4] la neurocirugia no es item relevante del paciente 100 [2.5] la edad del paciente 100 es mayor que 25 Por tanto si [2.6] la infección fue adquirida mientras el paciente estaba en el hospital entonces hay una
evidencia que el organismo que podría estar causando la infección son (0.75) staphylococcus-coag-pos(0.3) pseudomonas-aeruginosa(0.3) klebsiella-pneumoniae(0.5)
Cómo y por qué?
![Page 63: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/63.jpg)
Si el doctor quiere saber como se llego a una conclusión, podría preguntar Doctor: Como 2.3 El sistema entonces responde con: Mycin: Las siguientes reglas concluyen acerca de la probabilidad que el tipo de
la infección sea bacterial: [2.7] RULE148 (0.19) [2.8] RULE500 (0.51) [2.9] RULE501 (0.95) [3.0] RULE502 (0.97) [3.1] RULE526 (0.98) [3.2] RULE504 (0.97) [3.3] RULE524 (0.98)
Cómo y por qué?
![Page 64: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/64.jpg)
Lenguaje Natural•Entendiendo el Lenguaje Natural
•Entender el significado de un texto o del habla
•No es solamente emparejar patrones
•Aplicaciones del Lenguaje Natural
•Interfaces a base de datos ( clima, finanzas...)
•Servicio al cliente automatizado (bancaria, viajes...)
•Control de máquinas por medio de voz (PC´s, VCR´s, carros)
•Resumir (noticias, manuales..)
•Enrutamiento de emails
•Búsqueda inteligente en la web
•Traducción de documentos
•etc
![Page 65: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/65.jpg)
Tomado del Instituto Tecnológico de Massachusetts www.owc.mit.edu6.034 Artificial Intelligence 2004Archivo ch11-logicpro.pdf
Leer capitulo 8,9 del libro de Russell & Norvig
![Page 66: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/66.jpg)
Ejercicios
Teniendo la siguiente KB realice una búsqueda regresiva (backchaining) para verificar si “aprueba” es o no verdadera. Se sabe que “estudia” es verdadero.
a)Diga la secuencia de reglas que se utilizan en la búsqueda.
b) Dibuje el árbol de prueba.R1.- p & q -> apruebaR2.- s -> pR3.- w & r -> tR4.- t & u -> qR5.- v -> sR6.- m -> uR7.- estudia -> v, wR8.- estudia -> v & r & q
![Page 67: 4.3 Reglas y Programación Lógica](https://reader033.vdocuments.net/reader033/viewer/2022052702/568bde8b1a28ab2034b9dcf8/html5/thumbnails/67.jpg)
Ejerciciosb.- Encuentre el UMG de los siguientes ejercicioss1 s2 UMGEq(f(f(Bob), f(Bob)) Eq(f(x), x)A(B,C) A(x,y)A(x, f(D,x)) A(E, f(D, y))A(x, y) A(f(C, y), z)
c. Declare un universo (elementos) e interpretación (¿qué significan H, G y F?) que haga las primeras sentencias verdaderas y la tercera falsa. Use un universo de 2 elementos.1.x. H(x) G(x)2.x. F(x) G(x)3.x. F(x) H(x)