Académique Documents
Professionnel Documents
Culture Documents
Razonamiento Automatico
M. A. Pinninghoff J.
R. Contreras A.
1 Razonamiento automatico
Anteriormente se vio como determinar la correccion del razonamiento deductivo usando formulas
del Calculo Proposicional. Una forma fue usando tablas de verdad y la otra, reglas de deduccion.
Las ultimas no son muy adecuadas para la implementacion del razonamiento en una maquina, ya
que requieren de experiencia y representar esta experiencia en una base de conocimientos, no resulta
facil. Las tablas de verdad presentan un mecanismo adecuado, pero se hacen computacionalmente
intratables a medida que el numero de variables crece, mas aun si el lenguaje involucrado pertenece
al Calculo de Predicados.
Ejemplo.
Todas las formulas que participan en el razonamiento deben estar en su forma normal conjuntiva,
es decir tienen la estructura de una conjuncion de clausulas disyuntivas:
C1 C2 Cn
Cada Ci es llamada clausula. Una clausula es una disyuncion de literales y puede consistir de
un solo literal:
l1 l2 ln
donde cada li es un literal (positivo o negativo).
Ejemplo.
1
p q es una clausula.
{p q, p q r, q} es un conjunto de clausulas.
Refutacion es una estrategia de prueba, que consiste en mostrar que la negacion de la conclusion
es inconsistente con sus premisas, es decir, no hay una atribucion de verdad que satisfaga tanto a
las premisas como a la negacion de la conclusion (conjunto insatisfactible). Por ejemplo
{(p q), p} |= q
tiene la forma
{A1 , A2 , , An } |= C
lo cual significa que q es consecuencia logica (o se deduce) de {(p q), p}, una forma de pro-
bar esto es mostrar que la negacion de la conclusion es inconsistente con las premisas, esto es, en
el conjunto de formulas es insatisfactible o hay una contradiccion. Esta inconsistencia puede ser
expresada de la siguiente manera:
{(p q) p q} |=
donde el smbolo es una constante que tiene el valor falso y se conoce como clausula nula.
Por lo tanto lo que se dice en la expresion anterior es que la clausula nula se deduce de las premisas.
La prueba se puede ver facilmente: ya que p es verdadera, y tenemos que (p q) es verdadera, por
lo tanto q debiera ser verdadera, pero se tiene q!, luego hay una contradiccion.
1.2 Ejemplos
a.- Supongamos que Socrates esta en tal situacion, que el estara dispuesto a visitar a Platon, solo si
Platon estuviese dispuesto a visitarlo; y que Platon esta en tal situacion, que el no estara dispuesto
a visitar a Socrates, si Socrates estuviese dispuesto a visitarlo; pero estara dispuesto a visitar a
Socrates, si Socrates no estuviese dispuesto a visitarlo.
2
p: Socrates esta dispuesto a visitar a Platon
q: Platon esta dispuesto a visitar a Socrates
{p q, p q, p q, p}
Paso 2: Llevar todas las formulas (premisas y conclusion negada) a clausulas y formar un con-
junto de clausulas. A su vez cada clausula forma un conjunto de literales.
Clausulas:
{p q, p q, p q, p}
{{p, q}, {p, q}, {p, q}, {p}}
Resolucion:
i) {p, q} y {p} resuelven en {q}
ii) {p, q} y {q} resuelven en {p}
iii) {p} y {p} resuelven en
Por lo tanto {p q, p q, p q} |= p.
Esto es, de las premisas se deduce que Socrates no esta dispuesto a visitar a Platon.
b) Un bebe llora si tiene hambre. Cuando un babe se enoja se le pone la cara roja. Si el bebe
no esta enojado, no llora. Luego, si un bebe tiene hambre, tiene la cara roja.
p: El bebe llora
q: El bebe tiene hambre
r: El bebe se enoja
s: El bebe tiene la cara roja
Paso 2: Llevar todas las formulas (premisas y conclusion negada) a clausulas y formar un con-
junto de clausulas.
Clausulas:
3
{q p, r s, r p, q s}
Resolucion:
i) {r, s} y {s} resuelven en {r}
ii) {r, p} y {r} resuelven en {p}
iii) {q, p} y {p} resuelven en {q}
iv) {q} y {q} resuelven en
Por lo tanto {q p, r s, r p} |= q s.
Esto es, de las premisas se deduce que si un bebe tiene hambre, tiene la cara roja.
El primer paso es llevar las formulas a la forma de clausulas disyuntivas tanto a las premisas
como a la negacion de la conclusion. En el segundo paso, es necesario unificar las clausulas candi-
datas a parear como padres. Esta unificacion consiste en determinar si es posible aplicar regla de
sustitucion a los terminos que forman parte de los predicados de las candidatas a padres. Estos
dos pasos requieren de procedimientos que se veran en las subsecciones siguientes. Finalmente se
aplica resolucion a las clausulas padres que parean.
Ejemplo.
Una clausula es una disyuncion finita de literales (positivos o negativos), que puede consistir de
un solo literal.
Ejemplos.
P (x1 , x2 , , xn )
afirma que en el dominio de discurso existe algun x que cumple con la propiedad P . La formula
es satisfecha con al menos una constante que tiene la propiedad P . Suponga que esa constante es
c; entonces xP (x) puede ser reemplazado por P (c).
Por ejemplo suponga que x {Juan, Mara, Sara, David, Sergio }
As, xM ujer(x) es satisfecha por alguna constante y esa constante puede ser Mara o Sara.
Una variable existencialmente cuantificada puede ser reemplazada por una constante, pero esa
constante debe ser una nueva, no usada anteriormente.
para todo x existe un y que esta en la relacion P . Por ejemplo, todos tienen una madre o cada
hombre ama a una mujer :
En este caso el cuantificador existencial no puede ser reemplazado por una constante. Si se hace
esto, significara que todos los hombres aman a la misma mujer. Pero s, la variable existencialmente
cuantificada se puede reemplazar por una funcion que mapea cada x a la mujer que ama. La funcion
puede ser:
la cual retorna a la mujer que ama x. En generico podemos decir f (x) en lugar de mujer
amada por(x). Eliminando el cuantificador existencial queda:
xyzP (x, y, z)
2.1.2 Procedimiento
1.- Eliminar y , aplicando sus definiciones, donde X = x1 , x2 , , xn :
xP (X) xP (X)
xP (X) xP (X)
P (X) P (X)
4.- Normalizar variables. Si dos cuantificadores comparten un mismo nombre de variable, en-
tonces una de ellas bebe cambiar de nombre, a fin de que quede claro el dominio de cada cuantifi-
cador.
Por ejemplo
xP (x) xQ(x) debe cambiar a xP (x) yQ(y)
xz(P (x) yQ(y, z)) debe cambiar a xz(P (x) Q(g(x, z), z)) donde g es una funcion de
Skolem.
10.- Renombrar las variables. Que cada clausula tenga diferentes nombres de variables. Con
esto se busca que no haya dos clausulas que hagan referencia a la misma variable, para lo cual
es necesario renombrar a las variables adecuadamente. No es necesario que haya ninguna relacion
entre las variables de dos clausulas diferentes, aunque se hayan generado de la misma fbf.
Ejemplo 1.
6
Convertir la siguiente fbf en clausula:
xP (x) xQ(x)
Eliminar implicacion:
xP (x) xQ(x)
xP (x) xQ(x)
Renombrar variables:
xP (x) yQ(y)
Eliminar prefijo:
Ejemplo 2.
Convertir la siguiente fbf en clausula:
Eliminar implicacion:
Eliminar prefijo:
7
2.2 Unificacion
En la logica proposicional es facil determinar que dos literales l y l no pueden ser ciertos al mismo
tiempo. En la logica de predicados es un poco mas complicado, puesto que se deben considerar los
argumentos de los predicados. Por ejemplo, M ujer(Sara) y M ujer(Sara) es una contradiccion,
pero M ujer(Sara) y M ujer(Juan) no lo es. As para detectar contradicciones, se necesita un
algoritmo de pareamiento que compare dos literales y descubra si existe un conjunto de sustituciones
que los hace identicos. Este algoritmo se llama algoritmo de unificacion.
La esencia de la unificacion es tratar de ver si dos literales parean, esto es, comprobar si los
predicados coinciden, es decir, tienen nombres iguales. Si es as sigue adelante, si no, no hay forma
de unificarlos cualesquiera que sean sus argumentos. Si los predicados concuerdan, se analizan los
argumentos de dos en dos (uno de cada literal); si en el primer par, los elementos son iguales o hay
una sustitucion que los iguale, se sigue con el siguiente, y as sucesivamente.
Por ejemplo, la siguiente expresion dice que ser madre tambien es ser padres:
M adre(x, y) P adres(x, y)
A fin de chequear si un individuo pertenece a la categora de padres, se deben parear los literales
en la expresion. Suponga que sabemos que Sara es la madre de Juan:
M adre(Sara, Juan)
Es facil ver que Sara es uno de los padres de Juan. Esto se deduce de lo anterior sustituyendo
Sara por x y Juan por y. Al hacer esta sustitucion las varibles quedan ligadas a las constantes que
las sustituyeron. Una variable esta ligada, en este contexto, si hace referencia (es sustituida por) a
una constante u otra variable. En el ejemplo anterior, x quedo ligada a Sara y y a Juan y forman
un conjunto de sustituciones denotado por {Sara/x, Juan/y}.
La resolucion necesita conocer si los literales pueden parear. Si dos literales en diferentes
clausulas parean y uno es el complemento (negacion) del otro, entonces las clausulas pueden re-
solver. Dos literales parean si cumplen las siguientes condiciones:
1.- Nombre y numero de argumentos. Los nombres de los literales deben ser identicos (caracter
por caracter). Por ejemplo M adre y M adrede son distintos. Tambien deben tener igual numero de
argumentos (aridad).
2.- Si los nombres de los predicados son iguales, el paso siguiente es chequear los argumentos.
Cualquier funcion debe parear de acuerdo a 1. Quedan constantes y variables, para las cuales se
tiene las siguientes posibilidades:
i) constante a y constante b. Las constantes a y b parean si ellas parean caracter por caracter
(por ejemplo Juan no parea con Juana).
ii) Constante a y variable x. Si la variable x no esta ligada entonces ellas parean y la variable se
liga a la constante a/x. Si la variable ya esta ligada, solo parean si x estaba ligada a a anteriormente.
iii) Variable x y variable y. Si x e y ambas no estan ligadas, entonces ellas parean, pero si mas
tarde una de las variabes se liga con una sustitucion, entonces la otra tambien se liga. Si una de
las variables ya esta ligada y la otra no, entonces las variables parean y la variable no ligada se
ligara la misma constante. Dos variables ligadas parean si ambas estan ligadas a la misma constante.
El proceso de pareamiento y ligacion de las variables es llamado unificacion. Dos literales unif-
ican si hay una sustitucion que los hace iguales. Por ejemplo, M adre(x, y) y M adre(Sara, w)
unifican con la sustitucion {Sara/x, w/y}. Al conjunto de sustituciones se le llama unificador. Lo
que hace el algoritmo de unificacion es automatizar todo el proceso. Este algoritmo retorna el
unificador mas general (most general unifier, mgu), es decir, el menor conjunto de sustituciones
que unifican los literales. A continuacion se muestra el algoritmo; aqu, una expresion compuesta
se refiere a un predicado o una funcion; op denota al nombre del predicado o funcion y args op
a los argumentos. Las variables y los valores a los que son ligadas son almacenados en una tabla
de unificacion (UT). ADD UT agrega una entrada en UT y GET VAL retorna el valor al que la
variable esta ligada en UT o retorna la variable si esta no esta ligada. S es una estructura de pila
donde se almacenan las expresiones a unificar. Una pila es una estructura donde primero sale lo
ultimo que ingresa.
2.3 Ejemplos
2.3.1 Ejemplo 1
Encontrar el mgu (unificador mas general) de los dos literales:
Cada elemento del par es una expresion compuesta. Ambos predicados tienen el mismo nombre:
P ; y el mismo numero de argumentos: 2. Entonces en la pila se almacenan los siguientes pares:
La tabla UT aun esta vaca, por lo tanto GET VAL(x) simplemente retorna x, esto quiere decir
que x no esta ligada, luego puede parear con la constante a. UT es actualizada:
V ariable V alor
x a
Se retira de la pila el siguente par. Ambos elementos del par son funciones con el mismo nombre
y un argumento. Los argumentos son ingresados a la pila. El ultimo par es:
< y, b >
La variable y no esta en UT, luego parea con la constante b. Por lo tanto UT queda:
V ariable V alor
x a
y b
Esto significa que el mgu, o sea el conjunto menor de sustituciones que unifica a los literales es
{a/x, b/y}.
2.3.2 Ejemplo 2
Encontrar el mgu de los dos literales:
Tanto los nombres de los predicados como el numero de argumentos parean. Los pares en la
pila son:
Primero sale < x, y >. Ni x ni y estan en UT, por lo tanto ellas parean:
V ariable V alor
x y
Se retira de la pila el siguente par < x, g(f (b)) >. Retorna el valor de x, el cual es y. Pero y
puede parear con g(f (b)). UT queda:
V ariable V alor
x y
y g(f (b))
10
Se retira de la pila < f (a), z >. z no esta en UT y parea con f (a):
V ariable V alor
x y
y g(f (b))
z f (a)
2.3.3 Ejemplo 3
En este ejemplo se pondran en practica los conceptos anteriores. Se entregan tres sentencias,
seguidas de una pregunta que necesita ser respondida. La respuesta a la pregunta debe ser de-
ducida de las afirmaciones.
En clausulas disyuntivas:
En este caso la resolucion es usada como proceso deductivo. Lo que se quiere ver es si del
conjunto de clausulas se deduce (usando resolucion) que Bernardo bebe o no bebe alcohol.
Resolucion:
11
2.3.4 Ejemplo 4
Este ejemplo tiene lo mismo del ejemplo anterior con una pequena modificacion. Es un poco mas
preciso respecto a que a los amigos de Gustavo les gusta alguna clase de cerveza. Ademas se quiere
verificar si el razonamiento es correcto, esto es, si la conclusion se deduce de los argumentos
i) A todos los amigos de Gustavo les gusta la cerveza.
ii) A todos los que les gusta la cerveza, beben alcohol.
iii) Bernardo es amigo de Gustavo.
C) Luego, Bernardo bebe alcohol.
Llevandolo a clausulas:
Como conjuntos:
Resolucion:
References
[1] Callan, Rob. Artificial Intelligence. Palgrave Macmillan, 2003.
[2] Rich, Elaine; Knight, Kevin. Inteligencia Artificial. 2a Edicion McGraw-Hill, 1994.
[3] Russell, Stuart; Norvig, Peter. Inteligencia Artificial. Un enfoque moderno. Prentice Hall 1996.
13