Tema 1: Representaci´on del conocimiento mediante reglas

78
Inteligencia Artificial II Curso 2005–2006 Tema 1: Representaci´on del conocimiento mediante reglas Carmen Graciani D´ ıaz Jos´ e L. Ruiz Reina Dpto. de Ciencias de la Computaci´on e Inteligencia Artificial Universidad de Sevilla IA-II 2005–2006 C c I a Representaci´ on del conocimiento mediante reglas 1.1

Transcript of Tema 1: Representaci´on del conocimiento mediante reglas

Page 1: Tema 1: Representaci´on del conocimiento mediante reglas

Inteligencia Artificial II Curso 2005–2006

Tema 1: Representacion delconocimiento mediante reglas

Carmen Graciani Dıaz

Jose L. Ruiz Reina

Dpto. de Ciencias de la Computacion e Inteligencia Artificial

Universidad de Sevilla

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.1

Page 2: Tema 1: Representaci´on del conocimiento mediante reglas

Sistemas basados en el conocimiento

x Sistemas basados en el conocimiento:u Programas que resuelven problemas usando un determinado dominio de conoci-

miento

u A veces llamados sistemas expertos

x Ventajas:

u Facil acceso y disponibilidad de conocimiento (experto)

u Coste reducido

u Permanencia

u Fiabilidad y rapidez

u Respuestas no subjetivas

u Tutores

u Explicacion del razonamiento

u Competitivos con expertos humanos

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.2

Page 3: Tema 1: Representaci´on del conocimiento mediante reglas

Sistemas basados en el conocimiento

x Componentes principales de un SBC

u Conocimiento, que necesita ser representado

u Mecanismos que permitan inferir nuevo conocimiento

u Estos componentes deberıan constituir modulos independientes

x Otros componentes:

u Interfaz de usuario

u Explicaciones acerca del conocimiento inferido

u Adquisicion de nuevo conocimiento

u Tutor

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.3

Page 4: Tema 1: Representaci´on del conocimiento mediante reglas

Representacion del conocimiento

x Requisitos de los formalismos de representacion del conocimiento:

u potencia expresiva

u facilidad de interpretacion

u eficiencia deductiva

u posibilidad de explicacion y justificacion

x Algunos formalismos de representacion:

u reglas, redes semanticas, marcos, logicas de descripcion, logica de primer orden, . . .

x Cada formalismo de representacion usa un metodo de inferencia es-pecıfico:

u razonamiento hacia adelante y hacia atras (SLD-resolucion), herencia, tableros,

resolucion, . . .

x En este tema nos centraremos en la representacion del conocimientomediante reglas

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.4

Page 5: Tema 1: Representaci´on del conocimiento mediante reglas

Representacion del conocimiento mediante reglas

x Ejemplos (reglas):

SI la luz del semaforo es verde Y no hay peatones cruzandoENTONCES continua la marcha

SI x es numero natural Y x es parENTONCES x es divisible por 2

SI el reactivo toma color azul Yla morfologıa del organismo es alargada Yel paciente es un posible receptorENTONCES existe una evidencia (0.7) de quela infeccion proviene de pseudomonas.

x Ejemplos (hechos):

La luz del semaforo es verde

El reactivo toma color azul

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.5

Page 6: Tema 1: Representaci´on del conocimiento mediante reglas

Representacion del conocimiento mediante reglas

x Esencialmente, existen dos mecanismos para inferir nuevo conocimientoa partir de un conjunto de reglas

u Razonamiento hacia atras (backward chaining)

u Razonamiento hacia adelante (forward chaining)

x En lo que sigue veremos con detalle ambos mecanismos

u Se estudian mejor desde un punto de vista formal mediante su formulacion logica

(proposicional y primer orden)

x Recomendacion: repasar ”Logica Informatica”, segundo curso y ”Pro-gramacion Declarativa”, tercer curso

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.6

Page 7: Tema 1: Representaci´on del conocimiento mediante reglas

Logica proposicional

x Lenguaje de la logica proposicional

u Sımbolos (variables) proposicionales: p, q, r, luz-verde, peatones-cruzando, . . .

u Conectivas: ¬, ∨, ∧, →, ↔

x Formulas de la logica proposicional

u Los sımbolos son formulas (atomicas)

u Si F1 y F2 son formulas, tambien lo son F1 ∨ F2, F1 ∧ F2, F1 → F2, ¬F1, F1 ↔ F2

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.7

Page 8: Tema 1: Representaci´on del conocimiento mediante reglas

Logica proposicional

x Consecuencia logica:

u Interpretacion: asignacion de valores de verdad (⊤ o ⊥) a las variables proposicio-

nales

u Una interpretacion asigna un valor de verdad a cada formula (por ejemplo, I(F1 →

F2) = ⊥ si I(F1) = ⊤ y I(F2) = ⊥; I(F1 → F2) = ⊤ en caso contrario)

u Consecuencia logica: decimos que {F1, F2, . . . , Fn} |= G si para toda interpretacion I

tal que I(Fi) = ⊤ i = 1, . . . , n, se tiene que I(G) = ⊤

u Ejemplo: {p, q, p ∧ q → r} |= r

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.8

Page 9: Tema 1: Representaci´on del conocimiento mediante reglas

Reglas, hechos, objetivos y bases de conocimiento

x Una regla (proposicional) es una formula proposicional de la forma

p1 ∧ p2 ∧ . . . ∧ pn → q

donde p1, . . . , pn, q son sımbolos proposicionales

u Representaciones alternativas: q ← p1, . . . , pn, SI p1 Y p2 Y ...Y pn ENTONCES q

u Cabeza y cuerpo de una regla

x Un hecho (proposicional) es una variable proposicional

u Un hecho puede verse como una regla sin cuerpo

u Representacion alternativa: p←

x Una base de conocimiento es un conjunto de hechos y reglas

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.9

Page 10: Tema 1: Representaci´on del conocimiento mediante reglas

Un ejemplo ”de juguete”: fuga de agua

x Situacion:

COCINA

BAÑO RECIBIDOR

VENTANA

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.10

Page 11: Tema 1: Representaci´on del conocimiento mediante reglas

Un ejemplo ”de juguete”: fuga de agua

x Base de conocimiento FA:fuga_en_ba~no ← recibidor_mojado, cocina_secaproblema_en_cocina ← recibidor_mojado, ba~no_secono_agua_exterior ← ventana_cerradano_agua_exterior ← no_lluevefuga_en_cocina ← problema_en_cocina, no_agua_exterior

recibidor_mojadoba~no_secoventana_cerrada

x Ejemplo de consecuencia logica: FA |= fuga en cocina

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.11

Page 12: Tema 1: Representaci´on del conocimiento mediante reglas

Deduccion en una base de conocimiento

x Problema: implementar un algoritmo tal que dada una base de conoci-miento BC y un atomo p, responda a la pregunta ¿BC |= p?

x Derivabilidad respecto de una base de conocimiento:

u Regla de inferencia: Modus Ponens:

p1 p2 . . . pn p1 ∧ p2 ∧ . . . ∧ pn → q

q

u Dada una base de conocimiento BC y un sımbolo de proposicion p, decimos que

BC ⊢ p si existe una secuencia de formulas F1, . . . , Fn tales que Fn = p y cada Fi esta en

BC o se obtiene de formulas anteriores mediante aplicacion de Modus Ponens

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.12

Page 13: Tema 1: Representaci´on del conocimiento mediante reglas

Deduccion en una base de conocimiento

x Teorema: BC |= p ⇐⇒ BC ⊢ p

u Este teorema nos sugiere como implementar algoritmos para responder preguntas

a una base de conocimiento

u Esencialmente, se trata de implementar procesos que buscan una secuencia de apli-

caciones validas de la regla de Modus Ponens que obtenga p como formula final

u Por tanto, algoritmos de busqueda

x Esta busqueda puede realizarse:

u Hacia adelante: partiendo de BC

u Hacia atras: partiendo de p

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.13

Page 14: Tema 1: Representaci´on del conocimiento mediante reglas

Encadenamiento hacia atras proposicional

FUNCION ENCADENAMIENTO-HACIA-ATRAS-PROP(BC,p)Devolver ENCADENAMIENTO-HACIA-ATRAS-PROP-REC(BC,{p})

FUNCION ENCADENAMIENTO-HACIA-ATRAS-PROP-REC(BC,OBJETIVOS)1. Si OBJETIVOS esta vacıo, devolver EXITO y terminar2. Hacer ACTUAL igual a SELECCIONA-UNO(OBJETIVOS)3. Para cada elemento q ← p1, ..., pn (n≥0) en BC tal que q=ACTUAL

3.1 Hacer NUEVOS-OBJETIVOS igual a {p1, ..., pn} ∪ (OBJETIVOS\{ACTUAL})3.2 Hacer RESULTADO igual a

ENCADENAMIENTO-HACIA-ATRAS-PROP-REC(BC,NUEVOS-OBJETIVOS)3.3 Si RESULTADO es EXITO, devolverlo y terminar.

4. Devolver FALLO

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.14

Page 15: Tema 1: Representaci´on del conocimiento mediante reglas

Encadenamiento hacia atras proposicional

x Es facil ver que si ENCADENAMIENTO-HACIA-ATRAS-PROP(BC,p) devuelveEXITO, entonces BC ⊢ p

x Se trata de una busqueda en profundidad mediante backtracking

x No es completa (podrıa ser que BC ⊢ p y que el algoritmo no devolvieraEXITO, debido a la posible existencia de ramas infinitas)

x Estrategia de busqueda:

u Busqueda en profundidad

u Seleccion del objetivo a resolver: cualquier funcion de seleccion valdrıa

u Orden de uso de las reglas de la base de conocimiento

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.15

Page 16: Tema 1: Representaci´on del conocimiento mediante reglas

Logica de primer orden

x Lenguaje de la logica de primer orden

u Sımbolos de variable: x, y, . . .

u Sımbolos de funcion (con su aridad): f , g, . . .

u Sımbolos de predicado (con su aridad): p, q , . . .

u Conectivas: ¬, ∨, ∧, →, ↔

u Cuantificadores: ∀, ∃

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.16

Page 17: Tema 1: Representaci´on del conocimiento mediante reglas

Logica de primer orden

x Terminos de la logica de primer orden

u Las variables son terminos

u Si t1, . . . , tn son terminos y f es un sımbolo de funcion de aridad n, entonces

f(t1, . . . , tn) es un termino

x Formulas de la logica de primer orden

u Si t1, . . . , tn son terminos y p es un sımbolo de funcion de aridad n, entonces p(t1, . . . , tn)

es una formula (atomica)

u Si F1 y F2 y son formulas y x es una variable, tambien lo son F1∨F2, F1∧F2, F1 → F2,

¬F1, F1 ↔ F2, ∀xF1 y ∃xF1

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.17

Page 18: Tema 1: Representaci´on del conocimiento mediante reglas

Logica de primer orden

x Consecuencia logica:

u Interpretacion: un conjunto (universo) junto con una asignacion de funciones y

relaciones concretas, en ese universo, a los sımbolos de funcion y predicado

u Una interpretacion asigna un valor de verdad a cada formula (repasar LI)

u Consecuencia logica: decimos que {F1, F2, . . . , Fn} |= G si para toda interpretacion I

tal que I(Fi) = ⊤, para todo i = 1, . . . , n, se tiene que I(G) = ⊤

u Ejemplo:

{∀x(antecesor(y, x)→ quiere(x, y)), antecesor(Pedro, Juan)} |= quiere(Juan, Pedro)

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.18

Page 19: Tema 1: Representaci´on del conocimiento mediante reglas

Reglas, hechos, y bases de conocimiento

x Una regla es una formula de primer orden de la forma

P1 ∧ P2 ∧ . . . ∧ Pn → Q

donde P1, . . . , Pn, Q son formulas atomicas

u Las variables de una regla se interpretan como universalmente cuantificadas

u Representaciones alternativas: como en el caso proposicional

x Un hecho es una formula atomicau Como en el caso proposicional, un hecho puede verse como una regla sin cuerpo

x Una base de conocimiento es un conjunto de hechos y reglas

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.19

Page 20: Tema 1: Representaci´on del conocimiento mediante reglas

Ejemplo: una pequena base de conocimiento

R1: hereda_de(x,y) ← bueno(x),rico(y),quiere(x,y)R2: quiere(x,y) ← amigo(x,y)R3: quiere(x,y) ← antecesor(y,x)R4: antecesor(x,y) ← progenitor(x,y)R5: antecesor(x,y) ← progenitor(x,z),progenitor(z,y)H1: progenitor(padre(x),x)H2: rico(Pedro)H3: rico(padre(padre(Juan)))H4: amigo(Juan,Pedro)H5: bueno(Juan)

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.20

Page 21: Tema 1: Representaci´on del conocimiento mediante reglas

Deduccion en una base de conocimiento

x Sustituciones: θ = {x1 7→ t1, . . . , xn 7→ tn}

u Si Q es una formula atomica, θ(Q) es la formula obtenida sustituyendo cada aparicion

de xi en Q por ti

x Regla de inferencia: Modus Ponens Generalizado

P1 P2 . . . Pn P ′1∧ P ′

2∧ . . . ∧ P ′n→ Q

θ(Q)

donde θ es una sustitucion tal que θ(Pi) = θ(P ′i )

u Ejemplo: a partir de antecesor(y, x)→ quiere(x, y) y de antecesor(Pedro, Juan) se deduce

quiere(Juan, Pedro) (mediante la sustitucion θ = {x 7→ Juan, y 7→ Pedro})

u Dada una base de conocimiento BC y una formula atomica P , decimos que BC ⊢ P si

existe una secuencia de formulas F1, . . . , Fn tales que Fn = P y cada Fi esta en BC o se

obtiene de formulas anteriores mediante aplicacion de Modus Ponens Generalizado

x Teorema: BC |= P ⇐⇒ BC ⊢ P

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.21

Page 22: Tema 1: Representaci´on del conocimiento mediante reglas

Razonamiento hacia atras con reglas de primer orden

x Podemos aplicar la misma idea que en el caso proposicional para di-senar un algoritmo de encadenamiento hacia atras basado en la regla deModus Ponens Generalizado

x Dado un objetivo Q y una regla Q1 ∧ . . . ∧ Qn → P , los nuevos objetivospodrıan ser {θ(Q1), . . . , θ(Qn)} si encontramos una sustitucion θ tal queθ(P ) = θ(Q)

u Dicha sustitucion se denomina unificador de P y Q

x Por tanto, se necesita un algoritmo que dado el objetivo y la cabeza dela regla, encuentre un unificador, si es que existe

u Dicho algoritmo se denomina algoritmo de unificacion

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.22

Page 23: Tema 1: Representaci´on del conocimiento mediante reglas

Unificacion

x Ejemplos:

Objetivo Cabeza de regla Unificador

amigo(x,Juan) amigo(Antonio,y) {x 7→ Antonio,y 7→ Juan}progenitor(padre(x),x) progenitor(y,Juan) {x 7→ Juan,y 7→ padre(Juan)}p(f(x),g(y)) p(z,z) No existep(x) q(y) No existequiere(x,z) quiere(padre(y),x) {x 7→ padre(Juan),y 7→ Juan,z 7→ padre(Juan)}quiere(x,z) quiere(padre(y),x) {x 7→ padre(y),z 7→ padre(y)}

x En general, dados dos atomos podrıan no ser unificables, o si son unifi-cables pueden tener mas de un unificador

u Aunque se puede probar que si son unificables existe un unificador mas general que

cualquier otro unificador

u Ejemplo: {x 7→ padre(y), z 7→ padre(y)} es mas general que {x 7→ padre(Juan), y

7→ Juan, z 7→ padre(Juan)}

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.23

Page 24: Tema 1: Representaci´on del conocimiento mediante reglas

Algoritmo de unificacion

FUNCION UNIFICA(S,T)Devolver UNIFICA-REC(S,T,{})

FUNCION UNIFICA-REC(S,T,θ)1. Si S = T, devolver {}2. Si no, si S es variable, entonces:

2.1 Si S ocurre en T, devolver FALLO2.2 Si S no ocurre en T, devolver {S 7→ T}

3. Si no, si T es variable, entonces devolver UNIFICA-REC(T,S,θ)4. Si no, sea S=f(S1,...,Sn) y T=g(T1,...,Tm)

4.1 Si f6=g o n6=m, devolver FALLO4.2 En caso contrario, devolver UNIFICA-REC-LISTA([S1,...,Sn],[T1,...,Tn],θ)

FUNCION UNIFICA-REC-LISTA(LS,LT,θ)1. Si LS es la lista vacıa, devolver θ2. Si no, sea σ = UNIFICA-REC(PRIMERO(LS),PRIMERO(LT),θ)

2.1 Si σ es igual a FALLO, devolver FALLO2.2 En caso contrario, devolver

UNIFICA-REC-LISTA(σ(RESTO(LS)),σ(RESTO(LT)),COMPONER(θ,σ))u Nota: COMPONER(S1,S2) obtiene la sustitucion que actua como si se aplicara S1 y

a continuacion S2. Por ejemplo: COMPONER({x 7→ f(y),z 7→ g(u,v)}, {y 7→ k(u)}) =

{x 7→ f(k(u)), z 7→ g(u,v), y 7→ k(u)}IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.24

Page 25: Tema 1: Representaci´on del conocimiento mediante reglas

Algoritmo de unificacion

x Ejemplo:

UNIFICA(quiere(x,z),quiere(padre(y),x)) ⇒UNIFICA-REC(quiere(x,z),quiere(padre(y),x),{}) ⇒UNIFICA-REC-LISTA({x,z},{padre(y),x},{}) ⇒

[UNIFICA-REC(x,padre(y),{}) = {x 7→ padre(y)}]UNIFICA-REC-LISTA({z},{padre(y)},{x 7→ padre(y)}) ⇒

[UNIFICA-REC(z,padre(y),{x 7→ padre(y)}) = {z 7→ padre(y)}]UNIFICA-REC-LISTA({},{},{x 7→ padre(y),z 7→ padre(y)}) ⇒

{x 7→ padre(y),z 7→ padre(y)}

x Teorema: UNIFICA(S,T) no devuelve FALLO si y solo si S y T se puedenunificar; en ese caso, devuelve un unificador de S y T mas general quecualquier otro unificador

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.25

Page 26: Tema 1: Representaci´on del conocimiento mediante reglas

SLD-resolucion

x Combinando unificacion y encadenamiento hacia atras proposicional po-demos obtener un procedimiento que permite responder a preguntas deltipo ¿BC |= P?

u En concreto, el algoritmo encontrara sustituciones θ tal que BC |= θ(P ) (respuestas)

u Este algoritmo se denomina de SLD-resolucion

x Como en el caso proposicional, el algoritmo realiza una busqueda enprofundidad (backtracking)

u Como es habitual, esta busqueda se puede representar mediante un arbol

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.26

Page 27: Tema 1: Representaci´on del conocimiento mediante reglas

Un ejemplo de arbol SLD

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.27

Page 28: Tema 1: Representaci´on del conocimiento mediante reglas

Arboles SLD

x Un arbol SLD representa el proceso de busqueda

u Los nodos de un arbol representan los objetivos pendientes (atomos por deducir)

x Nodo raız: objetivo inicial

x Nodos finales:u Un nodo de fallo se obtiene cuando su primer atomo no es unificable con la cabeza

de ninguna regla o hecho

u Un nodo de exito es aquel en el que no tiene objetivos pendientes

x Ramas de exitou Una rama de exito es aquella que termina en un nodo de exito

u Cada rama de exito ”construye” una sustitucion (respuesta) que se va ”concretan-

do” mediante los sucesivos pasos de unificacion

u Cada rama de exito representa una SLD-refutacion

x Renombrado de reglas y hechosIA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.28

Page 29: Tema 1: Representaci´on del conocimiento mediante reglas

Algoritmo de SLD-resolucion

FUNCION SLD-RESOLUCION(BC,Q)Devolver SLD-RESOLUCION-REC(BC,{Q},{})

FUNCION SLD-RESOLUCION-REC(BC,OBJETIVOS,θ)1. Si OBJETIVOS esta vacıo, devolver la lista unitaria θ2. Hacer RESPUESTAS igual a la lista vacıa

Hacer ACTUAL igual θ(SELECCIONA-UNO(OBJETIVOS))3. Para cada elemento P ← P1, ..., Pn en BC (renombrado con variables nuevas)

tal que σ=UNIFICA(P,ACTUAL) es distinto de FALLO3.1 Hacer NUEVOS-OBJETIVOS igual a {P1, ..., Pn} ∪ (OBJETIVOS\{ACTUAL})3.2 A~nadir a RESPUESTAS el resultado de

SLD-RESOLUCION-REC(BC,NUEVOS-OBJETIVOS,COMPONER(θ,σ))4. Devolver RESPUESTAS

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.29

Page 30: Tema 1: Representaci´on del conocimiento mediante reglas

Propiedades del algoritmo de SLD-resolucion

x Propiedades:

u Teorema (correccion): Si θ ∈ SLD-RESOLUCION(BC, P ) entonces BC ⊢ θ(P )

u Teorema: Si BC ⊢ σ(P ), entonces existe una SLD-refutacion a partir de P que

construye una respuesta θ tal que σ es ”un caso particular” de θ

u Problema: el algoritmo de SLD-resolucion podrıa no encontrar tal SLD-refutacion

debido a la existencia de ramas infinitas

x Estrategia de busqueda:

u En nuestro pseudocodigo, busqueda en profundidad

u Seleccion del objetivo a resolver: cualquier funcion de seleccion servirıa

u Orden en el que se usan las reglas y hechos de la BC

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.30

Page 31: Tema 1: Representaci´on del conocimiento mediante reglas

Programacion logica

x Una base de conocimiento puede verse como un programa declarativo

u Programa logico: conjunto de reglas y hechos

u Declarativo: ”que es” en lugar de ”como se hace”

x Las respuestas que calcula el algoritmo de SLD-resolucion pueden versecomo la salida que calcula el programa logico

x Ejemplo de programa logico: concatenacion

R1: concatena(c(x, y), z, c(x, v)) ← concatena(y, z, v)H1: concatena(NIL, x, x)

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.31

Page 32: Tema 1: Representaci´on del conocimiento mediante reglas

Arbol SLD

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.32

Page 33: Tema 1: Representaci´on del conocimiento mediante reglas

Arbol SLD

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.33

Page 34: Tema 1: Representaci´on del conocimiento mediante reglas

Programacion logica y PROLOG

x PROLOG es el lenguaje de programacion mas conocido basado en elparadigma de la programacion logica

x Diferencias entre PROLOG y Programacion logica pura

u Notacion :- en lugar de ←

u Estrategia de busqueda: seleccion del primer atomo; reglas y hechos usados en el

orden en el que aparecen en el problema

u Se amplıa la expresividad: negacion como fallo

u Control: corte

u Unificacion sin occur-check

u Funciones predefinidas: aritmetica,entrada/salida,. . .

u Azucar sintactico: operadores

u . . .

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.34

Page 35: Tema 1: Representaci´on del conocimiento mediante reglas

Implementacion en PROLOG de la deduccion hacia atras

x SBCs implementados en PROLOG:

u Debido a que el encadenamiento hacia atras forma parte del propio interprete,

PROLOG es un lenguaje especialmente adecuado para la implementacion de SBCs

basados en reglas con razonamiento hacia atras

x SBC: BC+motor de inferencia+interfaz de usuario

x Veamos un ejemplo de como se implementa un SBC basico en PROLOG

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.35

Page 36: Tema 1: Representaci´on del conocimiento mediante reglas

Un SBC basico en PROLOG

x Azucar sintactico para reglas y hechos

:- op(875, xfx, hecho).:- op(875, xfx, #).:- op(825, fx, si).:- op(850, xfx, entonces).:- op(775, xfy, y). % Asociatividad a la derecha

x Ejemplo de BC:

r1 # si bueno(X) y rico(Y) y quiere(X,Y) entonces hereda_de(X,Y).

r2 # si amigo(X,Y) entonces quiere(X,Y).

r3 # si antecesor(Y,X) entonces quiere(X,Y).

r4 # si progenitor(X,Y) entonces antecesor(X,Y).

r5 # si progenitor(X,Z) y progenitor(Z,Y) entonces antecesor(X,Y).

h1 hecho progenitor(padre(X),X).

h2 hecho rico(pedro).

h3 hecho rico(padre(padre(juan))).

h4 hecho amigo(juan,pedro).

h5 hecho bueno(juan).

x Nota: Las reglas y hechos de la base de conocimiento son hechos Prolog

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.36

Page 37: Tema 1: Representaci´on del conocimiento mediante reglas

Un SBC basico en PROLOG

x Programa PROLOG:

se_deduce(P) :- _ hecho P.

se_deduce(P) :- _ # si C entonces P, se_deduce(C).

se_deduce(P1 y P2) :- se_deduce(P1), se_deduce(P2).

x Ejemplo:

?- se_deduce(hereda_de(X,Y)).X = juanY = pedro ;X = juanY = padre(padre(juan))Yes?- se_deduce(hereda_de(pedro,juan)).No?-

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.37

Page 38: Tema 1: Representaci´on del conocimiento mediante reglas

SBC en PROLOG con justificacion de respuestas

x Estructura de las pruebas:

P es cierto esta_afirmado_por F.P es cierto es_consecuencia_de R porque Prueba.Prueba1 y Prueba2.

x Operadores:

:- op(850, xfx, es_consecuencia_de).:- op(850, xfx, esta_afirmado_por).:- op(800, xfx, porque).:- op(750, xfx, es).

x

Arboles de prueba

x Diferencia entre arbol SLD y arbol de prueba

u

Arbol SLD: Refleja el proceso de busqueda de la deduccion

u

Arbol de prueba: Justifica la deduccion encontradaIA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.38

Page 39: Tema 1: Representaci´on del conocimiento mediante reglas

SBC en PROLOG con justificacion de respuestas

se_deduce(P, P es cierto esta_afirmado_por F) :- F hecho P.

se_deduce(P, P es cierto es_consecuencia_de R porque Pr) :-R # si C entonces P, se_deduce(C, Pr).

se_deduce(P1 y P2, Prueba1 y Prueba2) :-se_deduce(P1, Prueba1), se_deduce(P2, Prueba2).

se_deduce(P) :- se_deduce(P,Prueba), escribe_prueba(Prueba).

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.39

Page 40: Tema 1: Representaci´on del conocimiento mediante reglas

Ejemplo de SBC en PROLOG con justificacion de respuestas

?- se_deduce(hereda_de(X,Y)).

****** Prueba encontrada:

por h5, sabemos que bueno(juan),

y

por h2, sabemos que rico(pedro),

y

por h4, sabemos que amigo(juan, pedro),

luego, segun r2 se concluye que quiere(juan, pedro),

luego, segun r1 se concluye que hereda_de(juan, pedro),

X = juan

Y = pedro ;

****** Prueba encontrada:

por h5, sabemos que bueno(juan),

y

por h3, sabemos que rico(padre(padre(juan))),

y

por h1, sabemos que progenitor(padre(padre(juan)), padre(juan)),

y

por h1, sabemos que progenitor(padre(juan), juan),

luego, segun r5 se concluye que antecesor(padre(padre(juan)), juan),

luego, segun r3 se concluye que quiere(juan, padre(padre(juan))),

luego, segun r1 se concluye que hereda_de(juan, padre(padre(juan))),

X = juan

Y = padre(padre(juan))

Yes

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.40

Page 41: Tema 1: Representaci´on del conocimiento mediante reglas

Ampliando funcionalidades del SBC

x Interfaz de usuario: hechos preguntables

x Preguntas ¿Como?

x Preguntas ¿Por que?

x Navegacion en la prueba

x Razonamiento probabilıstico

x Objetivos retardables

x Aprendizaje

x En el anexo se muestra un SBC implementado en PROLOG que incor-pora alguna de estas funcionalidades

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.41

Page 42: Tema 1: Representaci´on del conocimiento mediante reglas

Ejemplo de sesion (I):

?- se_deduce(hereda_de(X, Y)).

¿Es cierto amigo(juan, pedro)?

Posibles respuestas: [si, no, porque] (seguidas de un punto): porque.

=== Porque:

La regla r2 dice que probando:

amigo(juan, pedro)

se tiene:

quiere(juan, pedro)

Repito:

¿Es cierto amigo(juan, pedro)?

Posibles respuestas: [si, no, porque] (seguidas de un punto): porque.

=== Porque:

La regla r1 dice que probando:

bueno(juan)y rico(pedro)y quiere(juan, pedro)

se tiene:

hereda_de(juan, pedro)

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.42

Page 43: Tema 1: Representaci´on del conocimiento mediante reglas

Ejemplo de sesion (II):

Repito:

¿Es cierto amigo(juan, pedro)?

Posibles respuestas: [si, no, porque] (seguidas de un punto): si.

****** Se ha encontrado respuesta afirmativa:

------ Opciones:

------ 1) Ver la prueba completa y continuar.

------ 2) Navegar dentro de la prueba.

------ 3) Continuar.

Posibles respuestas: [1, 2, 3] (seguidas de un punto): 1.

****** Prueba encontrada:

por h5, sabemos que bueno(juan),

y

por h2, sabemos que rico(pedro),

y

por usted, sabemos que amigo(juan, pedro),

luego, segun r2 se concluye que quiere(juan, pedro),

luego, segun r1 se concluye que hereda_de(juan, pedro),

X = juan

Y = pedro

Yes

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.43

Page 44: Tema 1: Representaci´on del conocimiento mediante reglas

Ejemplo de sesion (III):

?- se_deduce(hereda_de(X, Y)).

****** Se ha encontrado respuesta afirmativa:

------ Opciones:

------ 1) Ver la prueba completa y continuar.

------ 2) Navegar dentro de la prueba.

------ 3) Continuar.

Posibles respuestas: [1, 2, 3] (seguidas de un punto): 2.

Por r1, hereda_de(juan, pedro) es consecuencia de:

1: bueno(juan)

2: rico(pedro)

3: quiere(juan, pedro)

Posibles respuestas: [seguir, 1, 2, 3] (seguidas de un punto): 3.

Por r2, quiere(juan, pedro) es consecuencia de:

1: amigo(juan, pedro)

Posibles respuestas: [seguir, arriba, 1] (seguidas de un punto): 1.

amigo(juan, pedro) esta afirmado por usted.

Posibles respuestas: [seguir, arriba] (seguidas de un punto): seguir.

¿Es cierto amigo(juan, padre(padre(juan)))?

Posibles respuestas: [si, no, porque] (seguidas de un punto): no.

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.44

Page 45: Tema 1: Representaci´on del conocimiento mediante reglas

Ejemplo de sesion (IV):

****** Se ha encontrado respuesta afirmativa:

------ Opciones:

------ 1) Ver la prueba completa y continuar.

------ 2) Navegar dentro de la prueba.

------ 3) Continuar.

Posibles respuestas: [1, 2, 3] (seguidas de un punto): 1.

****** Prueba encontrada:

por h5, sabemos que bueno(juan),

y

por h3, sabemos que rico(padre(padre(juan))),

y

por h1, sabemos que progenitor(padre(padre(juan)), padre(juan)),

y

por h1, sabemos que progenitor(padre(juan), juan),

luego, segun r5 se concluye que antecesor(padre(padre(juan)), juan),

luego, segun r3 se concluye que quiere(juan, padre(padre(juan))),

luego, segun r1 se concluye que hereda_de(juan, padre(padre(juan))),

X = juan

Y = padre(padre(juan))

Yes

?-

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.45

Page 46: Tema 1: Representaci´on del conocimiento mediante reglas

Deduccion hacia adelante

x En contraposicion al encadenamiento hacia atras, podemos aplicar laregla de Modus Ponens Generalizado hacia adelante

u A partir de los hechos, y usando las reglas, obtener nuevos hechos

u De la misma manera, los hechos deducidos permiten obtener nuevos hechos

x Problemas adecuados para razonar hacia adelante

u Monitorizacion y control

u Problemas dirigidos por los datos

u Sin necesidad de explicacion

x Problemas adecuados para razonar hacia atras

u Diagnostico

u Problemas dirigidos por los objetivos

u Interaccion/Explicacion al usuario

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.46

Page 47: Tema 1: Representaci´on del conocimiento mediante reglas

Algoritmo de encadenamiento hacia adelante

FUNCION ENCADENAMIENTO-HACIA-ADELANTE(BC,P)1. Hacer DEDUCIDOS igual a vacıo2. Para cada elemento Q ← P1, ..., Pn en BC (renombrado con variables nuevas)

2.1 Para cada θ tal que θ(Pi) = θ(P ′i ) para ciertosP ′i en BC, i=1,...,n,2.1.1 Hacer Q’=θ(Q)2.1.2 Si Q’ (o un renombrado de Q’) no esta ni en BC ni en DEDUCIDOS,

a~nadir Q’ a DEDUCIDOS2.1.3 Si σ=UNIFICA(P,Q’) es distinto de FALLO,

devolver σ y terminar3. Si DEDUCIDOS es vacıo, devolver FALLO y terminar.

en caso contrario, a~nadir DEDUCIDOS a BC y volver al punto 1

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.47

Page 48: Tema 1: Representaci´on del conocimiento mediante reglas

Algoritmo de encadenamiento hacia adelante

ENCADENAMIENTO-HACIA-ADELANTE(BC,hereda_de(x,y))

H6 | antecesor(padre(x), x) | R4 {x1 7→ padre(x), y1 7→ x} H1H7 | antecesor(padre(padre(x)), x) | R5 {x1 7→ padre(padre(x2)),

| | z1 7→ padre(x2), y1 7→ x2},| | H1 {x 7→ padre(x2)}, H1 {x 7→ x2}

H8 | quiere(Juan, Pedro) | R2 {x1 7→ Juan, y1 7→ Pedro} H4

H9 | quiere(x, padre(x)) | R3 {x1 7→ x, y1 7→ padre(x)} H6H10 | quiere(x, padre(padre(x))) | R3 {x1 7→ x, y1 7→ padre(padre(x))} H9H11 | hereda_de(Juan, Pedro) | R1 {x1 7→ Juan, y1 7→ Pedro}, H5, H2, H8

θ = {x 7→ Juan, y 7→ Pedro}

H12 | hereda_de(Juan, padre(padre(Juan))) | R1 {x1 7→ Juan, y1 7→ padre(padre(Juan))},| | H5, H3, H10 {x 7→ Juan}

θ = {x 7→ Juan, y 7→ padre(padre(Juan))}

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.48

Page 49: Tema 1: Representaci´on del conocimiento mediante reglas

Sistemas de produccion

x Paradigma de los sistemas de produccion

u Hechos: pieza basica de informacion

u Reglas: describen el comportamiento del programa en funcion de la informacion

existente

x Modelo de hecho:

<ındice>: <sımbolo>(<elemento>*)

x Modelo de regla:

<Nombre>:SI <Condicion>*ENTONCES

<Accion>*

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.49

Page 50: Tema 1: Representaci´on del conocimiento mediante reglas

Elementos de una regla

x Condiciones acerca de:u Existencia de cierta informacion: <patron de hecho>*

u Relaciones entre datos

x Acciones:u Incluir nueva informacion: INCLUIR: <hecho>*

u Eliminar informacion: ELIMINAR: <hecho>*

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.50

Page 51: Tema 1: Representaci´on del conocimiento mediante reglas

Ejemplo de sistema de produccion (I)

Base de Hechos:1: Tiene(pelos)2: Tiene(pezu~nas)3: Tiene(rayas_negras)

Base de Reglas:Jirafa:SI Es(ungulado)

Tiene(cuello_largo)ENTONCES

INCLUIR: Es(jirafa)

Cebra:SI Es(ungulado)

Tiene(rayas_negras)ENTONCES

INCLUIR: Es(cebra)

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.51

Page 52: Tema 1: Representaci´on del conocimiento mediante reglas

Ejemplo de sistema de produccion (II)

Ungulado_1:SI Es(mamıfero)

Tiene(pezu~nas)ENTONCES

INCLUIR: Es(ungulado)

Ungulado_2:SI Es(mamıfero)

Rumia()ENTONCES

INCLUIR: Es(ungulado)

Mamıfero_1:SI Tiene(pelos)ENTONCES

INCLUIR: Es(mamıfero)

Mamıfero_2:SI Da(leche)ENTONCES

INCLUIR: Es(mamıfero)

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.52

Page 53: Tema 1: Representaci´on del conocimiento mediante reglas

Razonamiento hacia adelante

x Componentes:

u Base de hechos (memoria de trabajo). Dinamica

u Base de reglas. Estatica

u Motor de inferencia (produce los cambios en la memoria de trabajo)

x Elementos adicionales:u Algoritmo para calcular eficientemente las reglas cuyas condiciones se satisfacen en

cada momento (equiparacion de patrones)

u Metodo para decidir en cada momento que regla de las activadas debe actuar (re-

solucion de conflictos)

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.53

Page 54: Tema 1: Representaci´on del conocimiento mediante reglas

Ciclo de ejecucion

x Construccion de la agenda: Conjunto de activaciones

u Activacion: regla para la que existen hechos que satisfacen sus condiciones (valores

de comodines)

x Seleccion de una regla cuya activacion se encuentra en la agenda

x Se llevan a cabo las acciones de la regla

x El ciclo se repite hasta que no existen mas activaciones en la agenda

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.54

Page 55: Tema 1: Representaci´on del conocimiento mediante reglas

Ciclo de ejecucion

Reglas

Equiparacion de patrones

Agenda

Hechos

Disparo

Resolucion de conflictos

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.55

Page 56: Tema 1: Representaci´on del conocimiento mediante reglas

Resolucion de conflictos

x Estrategias mas comunes:

u Una activacion solo se produce una vez

u La primera de la pila

u Aleatorio

u Mas especıfica (numero de condiciones)

u Menos utilizada

u Mejor (pesos)

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.56

Page 57: Tema 1: Representaci´on del conocimiento mediante reglas

Tabla de seguimiento

I Base de Hechos E Agenda D

1 Tiene(pelos) 0 Mamıfero 1: 1 1

2 Tiene(pezu~nas) 0

3 Tiene(rayas negras) 0

4 Es(mamıfero) 1 Ungulado 1: 4,2 2

5 Es(ungulado) 2 Cebra: 5,3 3

6 Es(cebra) 3

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.57

Page 58: Tema 1: Representaci´on del conocimiento mediante reglas

Comodines: anonimos, simples y multiples

x Comodın simple: ?x, ?y, ?elemento, ?

x Comodın multiple: $?x, $?y, $?elemento, $?

Base de Hechos:1: Lista(Mar Ana Luis Pepe)2: Alumno(Mar)3: Alumno(Ana 2 3 9)4: Alumno(Luis)5: Alumno(Pepe 3)

Base de Reglas:Elimina:SI Alumno(?n ? $?)

Lista($?i ?n $?f)ENTONCES

ELIMINAR: Lista(?i ?n ?f)INCLUIR: Lista(?i ?f)

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.58

Page 59: Tema 1: Representaci´on del conocimiento mediante reglas

Tabla de seguimiento

Base de Hechos E S Agenda D S

1: Lista(Mar Ana Luis Pepe) 0 1

2: Alumno(Mar) 0

3: Alumno(Ana 2 3 9) 0 Elimina: 3,1 (?n7→Ana ?i7→Mar ?f7→Luis Pepe) 1

4: Alumno(Luis) 0

5: Alumno(Pepe 3) 0 Elimina: 5,1 (?n7→Pepe ?i7→Mar Ana Luis ?f7→) 1

6: Lista(Mar Ana Luis) 1 2 Elimina: 3,6 (?n7→Ana ?i7→Mar ?f7→Luis) 2

7: Lista(Mar Luis) 2

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.59

Page 60: Tema 1: Representaci´on del conocimiento mediante reglas

Mundo de los bloques

Base de Hechos:1: Pila(a b c)2: Pila(d e f)3: Objetivo(c sobre e)

Base de Reglas:Mover_sobre_bloque:SI Objetivo(?bl1 sobre ?bl2)

Pila(?bl1 $?r1)Pila(?bl2 $?r2)

ENTONCESELIMINAR: Objetivo(?bl1 sobre ?bl2) Pila(?bl1 ?r1) Pila(?bl2 ?r2)INCLUIR: Pila(?r1) Pila(?bl1 ?bl2 ?r2)

Mover_al_suelo:SI Objetivo(?bl sobre suelo)

Pila(?bl $?r)ENTONCES

ELIMINAR: Objetivo(?bl sobre suelo) Pila(?bl ?r)INCLUIR: Pila(?r) Pila(?bl)

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.60

Page 61: Tema 1: Representaci´on del conocimiento mediante reglas

Mundo de los bloques

Liberar_bloque:SI Objetivo(?bl sobre ?)

Pila(?cima $? ?bl $?)ENTONCES

INCLUIR: Objetivo(?cima sobre suelo)

Liberar_bloque_base:SI Objetivo(? sobre ?bl)

Pila(?cima $? ?bl $?)ENTONCES

INCLUIR: Objetivo(?cima sobre suelo)

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.61

Page 62: Tema 1: Representaci´on del conocimiento mediante reglas

Tabla de seguimiento

Base de Hechos E S Agenda D

1: Pila(a b c) 0 2

2: Pila(d e f) 0 6

3: Objetivo(c sobre e) 0 7 Liberar bloque base: 3,2 (?bl7→e ?cima7→d) 5

Liberar bloque: 3,1 (?bl7→c ?cima7→a) 1

4: Objetivo(a sobre suelo) 1 2 Mover al suelo: 4,1 (?bl7→a ?r7→b c) 2

5: Pila(b c) 2 4 Liberar bloque: 3,5 (?bl7→c ?cima7→b) 3

6: Pila(a) 2

7: Objetivo(b sobre suelo) 3 4 Mover al suelo: 7,5 (?bl7→b ?r7→c) 4

8: Pila(c) 4 7

9: Pila(b) 4

10: Objetivo(d sobre suelo) 5 6 Mover al suelo 10,2 (?bl7→d ?r7→e f) 6

11: Pila(e f) 6 7 Mover sobre bloque: 3,8,11 7

(?bl17→c ?bl27→e ?r17→ ?r27→f)

12: Pila(d)

13: Pila() 7

14: Pila(c e f) 7

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.62

Page 63: Tema 1: Representaci´on del conocimiento mediante reglas

Equiparacion de patrones

x Algoritmo de fuerza bruta

Por cada regla Ri hacerPor cada patron de hecho Pj en Ri hacer

Por cada hecho Hk en la memoria de trabajo hacerComprobar si Pj equipara con Hk

Si todos los patrones tienen equiparacionincluir en la agenda todas las posibles

activaciones de la regla Ri

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.63

Page 64: Tema 1: Representaci´on del conocimiento mediante reglas

El algoritmo RETE

x Optimiza la construccion de la agenda en cada vuelta del ciclo de eje-cucion.

u El disparo de una regla produce, generalmente, pocos cambios en la memoria de

trabajo.

u Un mismo patron de hecho suele utilizar en varias reglas.

x Construye y mantiene el grafo enraizado, dirigido y acıclico Rete:

u Nodos: Representan patrones de hechos (menos la raız)

u Caminos: Representan las condiciones de una regla (desde la raiz)

x Cada nodo contiene informacion acerca de los hechos que equiparan conlos patrones de los nodos desde la raız (incluido el mismo), junto conlas asociaciones necesarias de las distintas variables.

x Al incluir/eliminar un hecho de la memoria de trabajo se envıa la in-formacion desde la raız, se propaga hacia las hojas y se modifica lainformacion de los nodos de manera adecuada.

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.64

Page 65: Tema 1: Representaci´on del conocimiento mediante reglas

RETE

R1: INCLUIR: H1(2 1)SI H1(?x ?y) tal que ?y > 3 H1(2 4)

H2(?y ?z ?z) H2(4 3 3)ENTONCES ... H2(5 9 9)

activar R1

?y (2 el.) = ?y (1 el.)

?y (2 el.) > 3 ?z (2 el.) = ?z (3 el.)

Entrada

H1 H2

1: ?x = 2, ?y = 4 2: ?y = 4, ?z = 33: ?y = 5, ?z = 9

1,2: ?x = 2, ?y = 4, ?z = 3

1,2: ?x = 2, ?y = 4, ?z = 3

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.65

Page 66: Tema 1: Representaci´on del conocimiento mediante reglas

RETE

R2 INCLUIR: H3(3 1 8)SI H2(?y ?z ?z) H3(9)

H3(?z $?)ENTONCES ...

activar R1

?y (2 el.) > 3 ?z (2 el.) = ?z (3 el.)

H2 H3

activar R2

2,4: ?y = 4, ?z = 3.3,5: ?y = 5, ?z = 9.

2,4: ?y = 4, ?z = 3.3,5: ?y = 5, ?z = 9.

H1

1: ?x = 2, ?y = 4

1,2: ?x = 2, ?y = 4, ?z = 3

1,2: ?x = 2, ?y = 4, ?z = 3

?y (H1) = ?y (H2) ?z (H2) = ?z (H3)

2: ?y = 4, ?z = 33: ?y = 5, ?z = 9

4: ?z = 3.4: ?z = 9.

Entrada

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.66

Page 67: Tema 1: Representaci´on del conocimiento mediante reglas

Clips

x CLIPS ≡ C Language Integrated Production Systems

u http://www.ghg.net/clips/CLIPS.html

x Lenguaje basado en reglas de produccion.

x Desarrollado en el Johnson Space Center de la NASA.

x Relacionado con OPS5 y ART

x Caracterısticas:u Conocimiento: Reglas, objetos y procedimental

u Portabilidad: implementado en C

u Integracion y Extensibilidad: Con programas en C, Java, FORTRAN, ADA...

u Verificacion y Validacion

u Documentacion

u Bajo coste: software libre

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.67

Page 68: Tema 1: Representaci´on del conocimiento mediante reglas

Bibliografıa

x Russel, S. y Norvig, P. Artificial Intelligence: A Modern Approach(2nd edition) (Prentice-Hall, 2003)

x Giarrantano, J.C. y Riley, G. Expert Systems Principles and Program-ming (3 ed.) (PWS Pub. Co., 1998)

x Lucas, P. y Van Der Gaag, L. Pinciples of Expert systems (Addison–Wesley Publishers Co., 1991)

x Curso ”Logica Informatica” 2004–05,http://www.cs.us.es/cursos/li

x Curso ”Programacion Declarativa” 2005–06,http://www.cs.us.es/cursos/pd

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.68

Page 69: Tema 1: Representaci´on del conocimiento mediante reglas

Inteligencia Artificial II Curso 2005–2006

Tema 1 (anexo): SBC en Prolog

Dpto. de Ciencias de la Computacion e Inteligencia Artificial

Universidad de Sevilla

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.69

Page 70: Tema 1: Representaci´on del conocimiento mediante reglas

Un pequeno sistema basado en el conocimiento: sbc.pl (I)

% ============================================

% sbc.pl

% Un peque~no sistema basado en el conocimiento

% ============================================

%%%%%%%%%%% Representacion del conocimiento

% La representacion interna de una regla debe ser:

%

% #

% / \

% / \

% Id entonces

% / \

% / \

% si Afirmacion

% |

% Cond

% Cond puede ser una combinacion, usando ’o’ o ’y’, de hechos (la disyuncion con prioridad mayor).

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.70

Page 71: Tema 1: Representaci´on del conocimiento mediante reglas

Un pequeno sistema basado en el conocimiento: sbc.pl (II)

% Ademas los hechos se deben representar internamente como:

%

% hecho

% / \

% / \

% Id Afirmacion

:- op(875, xfx, hecho).

:- op(875, xfx, #).

:- op(825, fx, si).

:- op(850, xfx, entonces).

:- op(800, xfy, o). % Asociatividad a la derecha

:- op(775, xfy, y). % Asociatividad a la derecha

%%%%%%%%%%%%%%%%%%%% Representacion de las pruebas

% P es cierto esta_afirmado_por H (H es un numero de hecho o usted).

% P es_consecuencia_de R porque Prueba.

:- op(850, xfx, es_consecuencia_de).

:- op(850, xfx, esta_afirmado_por).

:- op(800, xfx, porque).

:- op(750, xfx, es).

:- dynamic respuesta/2.

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.71

Page 72: Tema 1: Representaci´on del conocimiento mediante reglas

Un pequeno sistema basado en el conocimiento: sbc.pl (III)

%%%%%%%%%%%%% Motor de inferencia

se_deduce(P) :-

se_deduce(P,[],Prueba),

menu,

recoge_respuesta(Leida,[1,2,3]),

(Leida=1,escribe_prueba(Prueba);

Leida=2,navega(Prueba,0);

Leida=3).

se_deduce(P,_,P es cierto esta_afirmado_por F) :-

F hecho P.

se_deduce(P,T,P es cierto es_consecuencia_de R porque Prueba ) :-

R # si C entonces P,

se_deduce(C,[R # si C entonces P|T],Prueba).

se_deduce(P1 y P2,T,Prueba1 y Prueba2) :-

se_deduce(P1,T,Prueba1),

se_deduce(P2,T,Prueba2).

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.72

Page 73: Tema 1: Representaci´on del conocimiento mediante reglas

Un pequeno sistema basado en el conocimiento: sbc.pl (IV)

se_deduce(P1 o _, T,Prueba1) :- se_deduce(P1,T,Prueba1).

se_deduce(_ o P2, T,Prueba2) :- se_deduce(P2,T,Prueba2).

se_deduce(P,_,P es cierto esta_afirmado_por usted) :-

preguntable(P), respuesta(P,R), % solo habra si o no.

!,R=si.

se_deduce(P,T,P es cierto esta_afirmado_por usted) :-

preguntable(P), pregunta(P,T,R), assert(respuesta(P,R)),

R=si.

%%%%%%%%%%%%% Menu final

menu :-

nl,nl,write_ln(’****** Se ha encontrado respuesta afirmativa:’),

write_ln(’------ Opciones:’),

write_ln(’------ 1) Ver la prueba completa y continuar.’),

write_ln(’------ 2) Navegar dentro de la prueba.’),

write_ln(’------ 3) Continuar. ’).

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.73

Page 74: Tema 1: Representaci´on del conocimiento mediante reglas

Un pequeno sistema basado en el conocimiento: sbc.pl (V)

%%%%%%%%%%%% Auxiliares

recoge_respuesta(R,L) :-

write(’Posibles respuestas: ’),write(L),

write(’ (seguidas de un punto): ’),

read(R),member(R,L),!.

recoge_respuesta(R,L) :-

nl,write_ln(’Respuesta no valida.’),

recoge_respuesta(R,L).

escribe_lista([]).

escribe_lista([X|L]) :- write(X), escribe_lista(L).

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.74

Page 75: Tema 1: Representaci´on del conocimiento mediante reglas

Un pequeno sistema basado en el conocimiento: sbc.pl (VI)

%%%%%%%%%%%% Escritura de la prueba

escribe_prueba(Prueba) :-

nl,write_ln(’****** Prueba encontrada:’),nl,

escribe_prueba_aux(0,Prueba).

escribe_prueba_aux(N,A es cierto es_consecuencia_de B porque Prueba):-

M is N+2,

escribe_prueba_aux(M,Prueba),tab(N),

escribe_lista([’luego, segun ’,B,’ se concluye que ’,A,’,’]),nl.

escribe_prueba_aux(N,A y B):-

escribe_prueba_aux(N,A),tab(N),write_ln(’y’),

escribe_prueba_aux(N,B).

escribe_prueba_aux(N,P es cierto esta_afirmado_por F):-

tab(N),escribe_lista([’por ’,F,’, sabemos que ’,P,’,’]),nl.

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.75

Page 76: Tema 1: Representaci´on del conocimiento mediante reglas

Un pequeno sistema basado en el conocimiento: sbc.pl (VII)

%%%%%%%%%%%%%% Preguntas al usuario. Preguntas porque

pregunta(P,T,Respuesta) :-

nl,escribe_lista([’¿Es cierto ’,P,’?’]),nl,

recoge_respuesta(Leido,[si,no,porque]),

gestiona_respuesta_porque(P,T,Respuesta,Leido).

gestiona_respuesta_porque(_,_,si,si).

gestiona_respuesta_porque(_,_,no,no).

gestiona_respuesta_porque(P,[R|Reglas],Respuesta,porque) :-

escribe_regla(R),nl,write(’Repito:’),

pregunta(P,Reglas,Respuesta).

gestiona_respuesta_porque(P,[],Respuesta,porque) :-

write_ln(’Porque esa fue su pregunta!!’),write(’Repito: ’),

pregunta(P,[],Respuesta).

escribe_regla(R # si C entonces P) :-

nl,write_ln(’=== Porque:’),

escribe_lista([’La regla ’,R,’ dice que probando:’]),nl,

write_ln(C),

% escribe_condicion(C), cuando se mejore el de abajo.

write_ln(’se tiene: ’),write_ln(P).

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.76

Page 77: Tema 1: Representaci´on del conocimiento mediante reglas

Un pequeno sistema basado en el conocimiento: sbc.pl (VIII)

%%%%%%%%%%%%%% Navegacion por el arbol.

navega(P es cierto esta_afirmado_por usted,Nivel) :-

!, escribe_lista([P,’ esta afirmado por usted.’]),nl,

opciones_no_numericas(Nivel,Opciones),

recoge_respuesta(Opcion,Opciones),

gestiona_respuesta_navega(Opcion,Nivel,_,_).

navega(P es cierto esta_afirmado_por F,Nivel) :-

!,escribe_lista([P,’ esta afirmado por el hecho ’,F]),nl,

opciones_no_numericas(Nivel,Opciones),

recoge_respuesta(Opcion,Opciones),

gestiona_respuesta_navega(Opcion,Nivel,_,_).

navega(A es cierto es_consecuencia_de B porque Pruebas,Nivel) :-

!, escribe_lista([’Por ’,B,’, ’,A,’ es consecuencia de:’]),nl,

escribe_cuerpo(Pruebas,1,Max),

Max1 is Max - 1,

findall(N,between(1,Max1,N),L),

opciones_no_numericas(Nivel,M),

append(M,L,Opciones),

recoge_respuesta(Opcion,Opciones),

(A es cierto es_consecuencia_de B porque Pruebas) = Aux,

gestiona_respuesta_navega(Opcion,Nivel,Pruebas,Aux).

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.77

Page 78: Tema 1: Representaci´on del conocimiento mediante reglas

Un pequeno sistema basado en el conocimiento: sbc.pl (IX)

gestiona_respuesta_navega(arriba,_,_,_):-!.

gestiona_respuesta_navega(seguir,_,_,_):-!,fail.

gestiona_respuesta_navega(N,Nivel,Pruebas,P) :-

n_esima_prueba(Pruebas,N,Pn), Nivel1 is Nivel+1,

navega(Pn,Nivel1), navega(P,Nivel).

opciones_no_numericas(0,[seguir]):-!.

opciones_no_numericas(_,[seguir,arriba]).

escribe_cuerpo(P1 y P2,N1,N3) :-

!, escribe_cuerpo(P1,N1,N2), escribe_cuerpo(P2,N2,N3).

escribe_cuerpo(P,N,N1) :-

tab(3), escribe_lista([N,’: ’]),

escribe_lo_probado(P),nl, N1 is N+1.

escribe_lo_probado(P es cierto esta_afirmado_por _):- write(P).

escribe_lo_probado(P es cierto es_consecuencia_de _) :- write(P).

n_esima_prueba((P1 y P2) y P3,N,P) :- !,n_esima_prueba(P1 y P2 y P3,N,P).

n_esima_prueba(P1 y _,1,P1):-!.

n_esima_prueba(_ y P2,N,P) :-!, N1 is N-1, n_esima_prueba(P2,N1,P).

n_esima_prueba(P,1,P).

IA-II 2005–2006 CcIa Representacion del conocimiento mediante reglas 1.78