Está en la página 1de 13

Paradigmas de

Programacin

Programacin Lgica: Lgica de


Predicados
Universidad Tecnolgica Nacional
Facultad Regional Resistencia

UTN
FRRe

Contenidos
 Introduccin
 Problema
 Sistemas de Produccin
 Bsqueda
 Programacin con Lgica Proposicional
 Sintaxis
 Consecuencia lgica
 Resolucin
 Refutacin y Deduccin
 rbol de Resolucin
 Negacin
 Resolucin SLD
 Programacin con Lgica de Predicados
 Sintaxis
 Clusulas
 Unificacin
 Resolucin
 ProLog
 Ejemplos
Introduccin

 La principal debilidad de la lgica proposicional


es su limitada habilidad de expresar
conocimiento.
 Existen sentencias complejas que pierden
mucho de su significado cuando se las
representa mediante lgica proposicional.
 La lgica de predicados tiene acceso a los
elementos constitutivos de cada proposicin.
 Ejemplo:
Proposicin: Lassie es un mamfero = q
Predicado: Mamifero (lassie)

Introduccin 2
 Las sentencias expresan relaciones entre objetos, as
como tambin cualidades y atributos de tales
objetos.
 Tales cualidades, relaciones o atributos, se denominan
predicados. Los objetos se conocen como
argumentos o trminos del predicado.
 Pueden evaluarse tambin como V o F.
 La veracidad depende de sus trminos: un predicado
puede ser V para un conjunto de trminos y F para
otros.
 Ejemplo:
color (yerba, verde) V
color (yerba, azul) F
Introduccin 3: Ejemplo
estrella (sol)
orbita (mercurio, sol)
orbita (venus, sol)
orbita (tierra, sol)
orbita (luna, tierra)
orbita (phobos, marte)

Al construir los predicados se asume que su veracidad est basada


en su relacin con el mundo real.
Ahora bien:
parte_de (argentina, europa)

Tales predicados, establecidos y asumidos como lgicamente


verdaderos se denominan axiomas, y no requieren de justificacin
para establecer su verdad.

Constantes y Variables
estrella (sol)
orbita (mercurio, sol)
orbita (venus, sol)
orbita (tierra, sol)
orbita (luna, tierra)
orbita (phobos, marte)

En estos ejemplos los argumentos son constantes pero podran ser


variables. Por ejemplo en la consulta:

orbita (X, sol)?

Estaramos preguntando cuales son los cuerpos que orbitan alrededor


del sol?
Obtendramos tres respuestas: X=mercurio, X=venus, X=tierra.
Sintaxis
 En el Clculo de Predicados se usan varios tipos de smbolos:

 Un conjunto de elementos llamado tomos.


 Caracteres en minsculas y nmeros: raquel, a, b, 3200.

 Un vocabulario V de variables
 Se utilizarn letras MAYSCULAS: X, Y, Z.

 Un vocabulario F de smbolos funcionales (functores)


 Se utilizarn letras MAYSCULAS: EMPLEADO (jaime, 32)

 Un vocabulario P de smbolos predicativos.


 Se utilizarn letras minsculas: cartero (juan)

Definiciones
 Un trmino es:
 Un tomo
 Una variable
 Un smbolo funcional seguido de una sucesin de trminos (aridad).

 Un Predicado es:
 Un smbolo predicativo seguido de una sucesin de trminos (aridad).

 Una regla o clusula es alguna de las siguientes alternativas:


 A
 B1 Bn A
 B1 Bn

Donde A, B1, , Bn son predicados.


Clusulas de Horn

x1, xj (A) Tipo I


Afirmacin del predicado A

x1, xj (A B1 Bm) Tipo II


Si B1 Bm son predicados ciertos, entonces A tambin lo es.

x1, xj B1 Bm)
( Tipo III
x1, xj (B1 Bm) Tipo III
Existen valores de los argumentos (X1, , Xj) tales que con
dichos valores los predicados B1 y y Bm son ciertos?

Unificacin: Sustitucin
 El proceso de unificacin soluciona el problema de cmo resolver
dos predicados que tengan el mismo smbolo predicativo pero sus
argumentos no coinciden.
Sustitucin

Una sustitucin es un conjunto de asignaciones del tipo X:= t

dnde X es una variable y t es un trmino.

No puede existir ms de una sustitucin a la misma variable.


Una sustitucin tiene alcance clausular.

{ X:= juan, Y:= noel}


{ W:= Z, R := EMPLEADO (T, 3200)}
{ Q:= [], R:= [X, Z]}
Sustitucin: Aplicacin
Dada una sustitucin y un predicado P, la aplicacin de
a P, produce un nuevo predicado que se denota P, y
que corresponde al predicado inicial P donde toda
variable asignada en se cambia por el trmino
correspondiente, y las otras variables permanecen
incambiadas.
Ejemplo:
Dados: a (X, Y) p (X, Z), p (Z, Y) y = {X:=juan, Y:=pedro}

Resulta:
a (juan, pedro) p (juan, Z), p (Z, pedro)

Unificador
Dadas dos expresiones del lenguaje definido (por ejemplo dos
predicados) E1 y E2. Se llama unificador, a una sustitucin tal que
cumple que:

E1 = E2

Es decir que la aplicacin de la sustitucin a ambas expresiones da la


misma expresin.
Unificador: Ejemplos
Encontrar un unificador para
padre (Z, diego) y padre (jorge, diego)
= {Z := jorge}

Encontrar un unificador para tio (X, diego) y tio (W, diego)


La sustitucin = {X := W} es un unificador.
La sustitucin = {W := X} es un unificador.
La sustitucin = {X := guille, W:= guille} es un unificador.

Encontrar un unificador para r (Z, diego) y r (diego, jorge)


No existe unificador para ambos.

MGU: Unificador ms
general
Es el unificador que necesita asignaciones menos
especficas de trminos a variables.

Dadas dos sustituciones 1 y 2 y ambas son


unificadores de las expresiones E1 y E2, se dice
que 1 es ms general que 2 si existe una
sustitucin 3 tal que:

E1 1 3 = E2 2
Algoritmo de unificacin de
Robinson: Elementos I
 Primer par de discordancia:
 En el smbolo funcional
 En el nmero de argumentos
 En alguno de sus argumentos

 Ej:
p (a, f (b, c), g (X))
p (a, f (X, Y), g (h(Z))

p (f (a, b), c)
p (g (X, Y))

p (g (a, b, c), X)
p (f (X, a), Z)

Algoritmo de unificacin de
Robinson: Elementos II

 Comprobacin de Apariciones (occur check)


 Determinar cuando una variable aparece dentro de
un trmino.

 Ej:
X aparece en p(a,f(b,X))
X aparece en q(X, g (X, Y))
X no aparece en p(a, Z, g(a, b))
Algoritmo de unificacin de
Robinson I
 Sean E y F dos trminos que queremos unificar.
 Sea 0 = { }
 Sea E0 = E 0
 Sea F0 = F 0
 Sea k = 0

 Paso 1: si Ek = Fk entonces las clusulas E y F son


unificables y un unificador de mxima generalidad es:
 = i donde 0 i k

 Paso 2: si Ek <> Fk, se busca el primer par de


discordancia entre Ek y Fk. Sea este Dk.

Algoritmo de unificacin de
Robinson II
 Paso 3: Si Dk posee una variable y un trmino (puede ser otra variable)
pasamos al siguiente paso, en caso contrario los trminos no son
unificables y finaliza el proceso.

 Paso 4: Si la variable aparece en el trmino, se produce un occur


check y los trminos no unifican; finaliza el proceso. Si esto no
ocurre pasamos al siguiente paso.

 Paso 5: Construimos una nueva sustitucin que vincule la variable


con el trmino de Dk. Sea esta sustitucin k+1.
Construimos ahora dos nuevos trminos:
Ek+1 = Ek k+1
Fk+1 = Fk k+1
k = k + 1; Volvemos al paso 1.
Algoritmo de unificacin de
Robinson. Ejemplo I
 Ejemplo 1
 Sean los trminos p (a, X) y p (X, Y)  Por lo tanto:
 Sea 0 = { }  Sea E0 = p (a, X)
 Sea E = p (a, X)  Sea F0 = p (X, Y)
 Sea F = p (X, Y)

Iteracin 1 Iteracin 2 Iteracin 3


Paso 1: E0 <> F0 Paso 1: E1 <> F1 Paso 1: E2 = F2
Paso 2: D0 = {a, X} Paso 2: D1 = {a, Y}
Paso 3: ir al paso 4 Paso 3: ir al paso 4 = 2 1 0
Paso 4: Ir al paso 5 Paso 4: Ir al paso 5 = { X := a, Y := a}
Paso 5: 1 = {X := a} Paso 5: 2 = {Y := a}
E1 = E0 1 = p (a, a) E2 = E1 2 = p (a, a)
F1 = F0 1 = p (a, Y) F2 = F1 2 = p (a, a)

Algoritmo de unificacin de
Robinson. Ejemplo II
 Ejemplo 2
 Sean los trminos
p (a, F (X, b), Y) y
p (X, F (G (y), Z), T)
 Sea 0 = { }
 Sea E = E0 = p (a, F (X, b), Y)
 Sea F = F0 = p (X, F (G (Y), Z), T)

Iteracin 1 Iteracin 2
Paso 1: E0 <> F0 Paso 1: E1 <> F1
Paso 2: D0 = {a, X} Paso 2: D1 = {a, G(Y)}
Paso 3: ir al paso 4 Paso 3: tomo y Smbolo
Paso 4: Ir al paso 5 Funcional.
Paso 5: 1 = {X := a}
E1 = E0 1 = p (a, F (a, b), Y) No unifican.
F1 = F0 1 = p (a, F (G (Y), Z), T)
Regla de Resolucin
Supongamos que t1, , tn y s1, , sn son trminos tales que ti y si
son unificables con un MGU (Most General Unifier) para 1 i n y C1 y
C2 con clusulas.

La resolucin dice que:

C1 R(t1, , tn) y C2 R(s1, , sn) C1 C2


dnde R es un smbolo predicativo

Se puede mostrar que para clusulas de Horn:


(Q1 ... Qn) R(t1, , tn), (R(s1, , sn) ... P1 Pm) S

Res (Q1 ... Qn P1 ... Pm ) S

Ejemplo 1
1. s(X) q(Y) r(X, Y)
Dado el siguiente
programa. 2. q(X) p(X)
(en notacin Prolog)
3. p(b)
4. r(a, b)
1. s(X) :- q(Y), r(X, Y)
2. q(X) :- p(X) 5. s(a) Hiptesis agregada

3. p(b)
4. r(a, b) 6. q(Y) r(a, Y) Res por 1 y 5, ={X:=a}

7. p(Y) r(a, Y) Res por 2 y 6, ={X:=Y}


Consulta: s(a)
8. r(a, b) Res por 3 y 7, ={Y:= b}

9. Res por 4 y 8.
Ejemplo 2
Quien es el to de
1. padre (jorge, diego) Diego?
2. hermano (ricardo, jorge)
3. tio (X, Y) :- padre (Z, Y), hermano (X, Z)

1. padre (jorge, diego)


2. hermano (ricardo, jorge)
3. tio (X, Y) padre (Z, Y) hermano (X, Z)
4. tio (W, diego)
5. padre (Z, diego) hermano (W, Z) ={Y:=diego, X:=W}

6. hermano (W, jorge) ={Z:=jorge}

7. ={W:=ricardo}

Resolucin SLD
Selection Rule - Linear Resolution Definite Clauses

Para construir el rbol hay que determinar dos reglas:


 Regla de seleccin: determina qu frmula atmica del
objetivo utilizar a la hora de generar un nuevo nivel en el rbol
SLD.
Izquierda a Derecha
Derecha a Izquierda
Aleatoriamente...
 La regla de bsqueda: determina cmo se seleccionan las
clusulas que unifican con una frmula atmica dada.
Arriba hacia abajo
Abajo hacia arriba
Aleatoriamente
Empezando por los hechos
Empezando por las reglas que genere un unificador ms pequeo
Ejemplo 3: SLD
Dado el siguiente m(a)
programa:

m(X) :- s(X), n(b) s(a), n(b) s(a), n(a)

m(X) :- s(X), n(X)


s(X) :- l(X) l(a), n(b) q(Y), r(a, Y), n(b) l(a), n(a) q(Y), r(a, Y), n(a)
s(X) :- q(Y), r(X, Y)
q(X) :- p(X)
p(b) Falla p(Y), r(a, Y), n(b) Falla p(Y), r(a, Y), n(a)

r(a, b)
l(c) r(a, b), n(b) r(a, b), n(a)
n(a)

n(b) n(a)
Consulta: m(a)

Regla de Seleccin: de izquierda a derecha. Falla xito


Regla de Bsqueda: de arriba hacia abajo.

SLDDraw

 prog1.pl Ejemplo anterior


 prog.pl Ejemplo de Parentesco
 prog2.pl Concatenacin de Listas.
 prog3.pl Miembro de una lista.
 prog5.pl Recursin. Oficina.
 prog6.pl Regalo.