Está en la página 1de 6

G

LO
1 /48

09

-P
R
O

SUSTITUCION

Sustitucin

SE
SI
O

Se utilizar la notacin SUST(, ) para representar el


resultado de aplicar la sustitucin (o lista de enlace) a la
oracin , por ejemplo:
= {x/Juan, y/CursoIA}
= ConcurreA(x, y) GustaDe(x, y)

subst( {x/Juan, y/CursoIA} , ConcurreA(x, y) GustaDe(x, y) )


ConcurreA(Juan, CursoIA) GustaDe(Juan, CursoIA)
Juan concurre a curso de IA y Juan gusta de curso de IA.
2 /48

LO

Dadas las variables x1, x2, ..., xn y los trminos t1, t2, .., tn
(sin variables), la sustitucin es un conjunto de pares
ordenados:
= {x1/t1, x2/t2,..,xn/tn} (x/t se lee sustituir x por t)

Sustitucin

-P
R
O

La operacin consiste en, dado un literal que contiene x1,


x2, .., xn, y una sustitucin , reemplazar en todos los
lugares de donde aparezca xi por ti.
Ejemplo:
subst({X/george, Y/tony} , likes(X,Y)) = likes(george, tony)

09

3 /48

Ejercicio 1

Diga que se obtiene al aplicar SUST(, ) en los siguientes


casos:

SE
SI
O

= monopolio(M) penalizado(M)
= {M/LosGarcia}
= realiza(M,W) feo(W) odiado(M)
= {M/Hormel, W/Spam}
= presidente(X)inteligente(X)
= {X/Bush}

4 /48

G
LO
5 /48

09

-P
R
O

UNIFICACION

Unificacin

SE
SI
O

Lo que hace la rutina de unificacin UNIFICAR es convertir


dos oraciones y en una sustitucin mediante la cual y
resultan idnticas. De no existir tal unificacin, UNIFICAR
produce una falla.

Formalmente:
UNIFICAR(, ) = , donde SUST(, ) = SUST(, )
se conoce como el unificador de las dos oraciones.

6 /48

LO

Supongamos que tenemos la regla


conoce(juan,X) odia(juan,X) Juan odia a todos los que
conoce

Unificacin

-P
R
O

Y la queremos utilizar como regla de inferencia de Modus


Ponens y poder saber a quin odia Juan. Es decir, tenemos
que saber a qu oraciones de la base de conocimiento se
unifican a conoce(juan,X).
Supongamos que nuestra base de conocimiento contiene:
conoce(juan,jane)
conoce(Y,lenidas)
conoce(Y,madre(Y))
conoce(X, isabel)

09

7 /48

Unificacin

SE
SI
O

Al unificar el antecedente de la regla con cada una de las


oraciones de la BC obtenemos:
conoce(juan,X) odia(juan,X)
UNIFICAR(conoce(juan,
UNIFICAR(conoce(juan,
UNIFICAR(conoce(juan,
UNIFICAR(conoce(juan,

X),conoce(juan, jane)) = {X/jane}


X),conoce(Y, lenidas)) = {X/lenidas, Y/Juan}
X),conoce(Y, madre(Y))) = {Y/juan, X/madre(juan)}
X),conoce(X, isabel))= falla

conoce(juan,jane)
conoce(Y,lenidas)
conoce(Y,madre(Y))
conoce(X, isabel)

8 /48

-P
R
O

LO

La ltima unificacin falla, porque X no puede tomar el


valor de juan e isabel al mismo tiempo.
De manera intuitiva, sabemos que Juan odia a todos los
que conoce, y que todos conocen a Isabel, por lo que
podramos inferir que Juan odia a Isabel.
Para resolver este problema, se pueden normalizar por
separado las dos oraciones que se van a unificar, lo que
significa renombrar las variables de una de ellas (o de
ambas) para evitar que haya repeticin de nombres:

Unificacin

UNIFICAR(conoce(juan,x1),conoce(x2,isabel))={x1/isabel, x2/juan}

09

9 /48

Ejercicio 3

Unifique y resuelva.

SE
SI
O

1. femenino(ana)

2. padre (juan, ana)


3. femenino(X) padre (Y, X) hija(X, Y)

10 /48

Ejercicio 3

LO

1. femenino(ana)
2. padre (juan, ana)
3. femenino(X) padre (Y, X) hija(X, Y)
femenino(X) padre (Y, X) hija(X, Y)

femenino(ana)

padre (juan, ana)

-P
R
O

1 = {X/ana}
padre(Y,ana) hija(ana,Y)

2 = {Y/juan}

11 /48

SE
SI
O

09

hija(ana, juan)

PREGUNTAS

12 /48