Académique Documents
Professionnel Documents
Culture Documents
INTERFACE
EXPLICACIONES
MOTOR DE
INFERENCIAS
BASE DE HECHOS
ADQUISICION DE
CONOCIMIENTO
BASE DE
CONOCIMIENTOS
aparecen variables que pueden ser instanciadas para evaluar una declaracin. A
continuacin veamos un ejemplo elemental:
La Lgica de Predicados se expresa por formulas como:
x. q( x) p( x)
p v -q v s
p ^ q ^ -s
-p v -q v s
Funciones de Skolem
Cuando un cuantificador existencial esta en el mbito de un cuantificador universal, La
variable cuantificada debe ser reemplazada con una a funcin de Skolem de las
variables cuantificadas universalmente.
\ x E y (x < y)
\ x (x < mayor _ que(x))
por ejemplo
\ x (x < (x + 1))
^ E y pareja(y,x)
x hombre(x)
^ E y pareja( mujer(x) , x)
Leyes de DeMorgan
Estas leyes lgicas de aplicacin en la teora de los SE son:
-(p ^ q) es equivalente a (-p v -q)
-(p v q) es equivalente a (-p ^ -q)
x v y
Formas Clausales
Toda fbf o sentencia de lgica proposicional (clculo proposicional) puede
expresarse en Forma Normalizada Conjuntiva (FNC), Forma Normalizada Disyuntiva
(DNF) o como clusula de Horn (CH).
Forma Normalizada Conjuntiva (p v -q) ^ (q v s) ^ p
Conjuncin de disyunciones de literales.
Forma Normalizada Disyuntiva (-p ^ -q) v (-q ^ r) v p
Disyuncin de conjunciones de literales.
Clusulas de Horn. La clusula contiene como mximo un literal positivo
Clusulas de Horn
Una clusula de Horn es una conjuncin de disyunciones con no mas de un
literal positivo. Entendiendo como un literal positivo a uno que no esta negado.
Por ejemplo:
(-B1 v -B2 v B3 ) es una Clusula Horn.
(-A1 v A2) ^(-B1 v B3 ) es una Formula Horn. Sus componentes son clusulas Horn.
Estas clusulas de Horn representan la forma implicativa escrita de otro modo,
es decir, la implicacin B A equivale a -B v A y la implicacin B1 ^ B2 A
equivale a
-B1 v -B2 v A
Estas implicaciones se codifican en lenguaje Prolog usando :- (si) y , (el ltimo
representa ^ en Prolog )
A :- B1 , ,Bk ( el smbolo :- se lee si)
Importancia de las Clusulas de Horn
Para aplicar la lgica en programas de computador ha sido necesario encontrar
algoritmos que determinen si una expresin lgica vlida es satisfacible, es decir si
alguna combinacin de valores verdaderos o falsos de sus tomos hace verdadera a la
expresin. Si la expresin esta en la forma de clusula de Horn, se pueden obtener
mtodos de solucin de menor complejidad.
Independencia lgica en las Formas de Horn:
Es necesario que no haya dependencia lgica entre los literales para que el mtodo de
resultados correctos. Por ejemplo:
Chico(a) ^ (-Chico(a) v Cubo(a)) ^ (Esfera(a) v - Cubo(a))
Con el algoritmo citado el resultado seria satisfacible pero errneo ya que se concluye
que un cubo es chico y es esfera
Satisfacibilidad y completitud
Un problema lgico en general esta modelado por un conjunto de clusulas, lo que
puede representarse, por ejemplo, como:
{ a v -b, b v c,
a }
Resolucin
La Programacin Lgica tiene sus orgenes ms cercanos en los trabajos de prueba
automtica de teoremas de los aos sesenta. J. A. Robinson propone en 1965 una regla
de inferencia a la que llama resolucin, mediante la cual la demostracin de un teorema
puede ser llevada a cabo de manera automtica
La resolucin es una regla que se aplica sobre cierto tipo de frmulas del Clculo de
Predicados de Primer Orden, llamadas clusulas. La demostracin de teoremas bajo esta
regla de inferencia se lleva a cabo por reduccin al absurdo.
A partir de lenguajes preexistentes se desarroll un lenguaje orientado a la
programacin lgica que fue llamado precisamente Prolog. Con este lenguaje es posible
hacer preguntas sobre objetos y relaciones del dominio y estas preguntas se formulan
como objetivos o metas, que son evaluadas por el intrprete de Prolog utilizando su
mecanismo de inferencia interno, el cual determina si la meta a demostrar es una
consecuencia lgica del programa, aplicando reglas de deduccin para obtener la
respuesta.
Por ejemplo, utilizando la clusula de tipo meta ?abuelo(X,juan), para preguntar
quin es el abuelo de Juan? o bien quines son los abuelos de Juan?, es posible deducir
por ejemplo que Luis es abuelo de Juan, La ejecucin del programa, arrojara como
resultado X=luis.
El mtodo de deduccin utilizado por Prolog, para dar respuesta a los objetivos
planteados, se basa en el uso de una nica regla de inferencia: el Principio de
Resolucin. Los primeros trabajos de prueba automtica de teoremas utilizaban la
resolucin, aplicada a clusulas cualesquiera, pero el problema de las deducciones con
clusulas generales es el gran nmero de combinaciones posibles para llevar a cabo las
resoluciones. Por ello Prolog restringe el conjunto de clusulas, lo que le permite llevar
a cabo una prueba dirigida y, en la mayora de los casos, con un universo de
posibilidades explorable en tiempo de ejecucin.
Fundamento de la Resolucin
El procedimiento de resolucin es en esencia
un proceso iterativo cuya finalidad es
evaluar la verdad o falsedad de una frmula.
En cada paso dos clusulas padres son
resueltas para obtener una tercera
denominada resolvente. Es decir que este
resolvente es inferido a partir de las
clusulas padres.
Tomando por ejemplo como clusulas
padres P v Q y -P v R, el resolvente es Q
v R.
A1
A2
A3
A1
A2
A3
-
-P
El algoritmo de resolucin por refutacin se puede sintetizar como una prueba de una
proposicin P con respecto a un conjunto de axiomas C. A partir de esta definicin se
establece el algoritmo que comprende los siguientes pasos.
Forma
Clausal
-Q
-R
-P v Q
-P v R
Significado
No juntan los diarios
No cortan el csped
Si estn en casa, juntan los diarios
Si estn en casa, cortan el csped
-P v Q
P
Q
-P v R
-Q
P
R
-R
P^Q=>R
-P v -Q v R
S v U=>Q
-S v Q
-U v Q
U
-P v -Q v R
-R
-P v -Q
-U v Q
P
-Q
-U
En el ejemplo anterior observamos que segn las reglas que elijamos podemos llegar o
no a la solucin correcta (F). Por ejemplo tomando -S v Q en lugar de -U v Q.
La explicacin de esta falla es algo sutil. El procedimiento de resolucin es completo
en lgica proposicional y no en lgica de predicados.
Como el ejemplo anterior esta planteado en lgica proposicional, deberamos hallar
siempre la solucin correcta.
Pero vemos en el ejemplo que esto puede no ocurrir. Esto es porque la afirmacin de
que la resolucin es completa en lgica proposicional, se basa en una demostracin
terica, pero esta no nos da un algoritmo para hacerlo. De modo que en la prctica este
procedimiento puede darnos un resultado errneo si no disponemos de un algoritmo
adecuado. El algoritmo completo mas usado se llama DPLL, y se define por la
aplicacin de un conjunto de reglas de las cuales veremos algunas en lo que sigue.
Resolucin Unitaria
Un resolvente unitario es aquel en el que al menos uno de los padres es una clusula
unitaria (con un solo literal).
En la estrategia de resolucion unitaria es la aplicacin de resolucin en la cual todos los
resolventes son unitarios.
Ejemplo: Se seleccionan siempre dos clausulas en las que una de ellas tenga un solo
literal
C={p v q, -p v r, -q v r, -r}
1. p v q
2. -p v r
3. -q v r
4. -r
5. -p (de 2 y 4)
6. -q (de 3 y 4)
7. q (de 1 y 5)
8. p (de 1 y 6)
9. r
(de 3 y 7)
10. vacia (de 6 y 7)
Los resolventes generados son un subconjunto de los que podean haberse obtenido sin
esta restriccin, por ej. De 1 y 2 podra haberse obtenido q v r, pero esta clausula nunca
sera generada por esta estrategia.
Observar que en esta estrategia el resolvente siempre contiene menos literales que la
clausula padre no unitaria, por lo que el mtodo sigue una bsqueda directa hacia la
clusula vaca ganando eficiencia.
La estrategia no produce un algoritmo COMPLETO. Por ejemplo la frmula
C={p v q, -p v q, p v -q, -p v -q } es insatisfacible pero nunca se encontrara la clusula
vacia por no serlo ninguna de las componentes.
Resolucin de entrada
Es aquella en la cual al menos una de las clausulas padre pertenece al conjunto original
de entrada
Ejemplo:
C={p v q, -p v r, -q v r, -r}
1. p v q
2. -p v r
3. -q v r
4. -r
5. q v r
(de 1 y 2)
6. p v r
7. -p
8. r
9. vaca
(de 1 y 3)
(de 2 y 4)
(de 2 y 6)
(de 4 y 8)
Resolucin Lineal
Generalizacin de la anterior. Es aquella en la cual al menos una de las clausulas padre
pertenece al conjunto original de entrada o es antepasado del otro padre
Ejemplo: C={p v q, -p v q, p v -q, -p v -q }
pvq
-p v q
p v q
-p v q
q
p
-q
q
vacia
Resolucin ordenada
1. Cada clausula se toma como un conjunto de litrerales ordenados.
2. La resolucin solo se realiza con los primeros literales de cada clausula.
3. El orden del resolvente es tal que mantiene primero a los literales del padre positivo
(el que tenia el primer literal nonegado)
Es la mas eficiente.
Ejemplo: C={p v q, -p v r, -q v r, -r}
Se ordenan los literales de cada clausula alfabeticamente
1. p v q
2. -p v r
3. -q v r
4. -r
5. q v r
6. r
7. vacio
(de 1 y 2)
(de 3 y 5)
(de 4 y 6)
Observese que 1 y 3, 2 y 4, 3 y 4 no resuelven por no ser los primeros los literales que
podrian combinarse.
No es completa pero si lo es para clusulas de Horn, al igual que la lineal, por lo cual
son las que mas se emplean.
Unificacin
La Unificacin es un procedimiento de emparejamiento que compara dos literales y
descubre si existe un conjunto de sustituciones que los haga idnticos. La idea bsica de
la unificacin es sencilla. Para unificar dos literales vamos recorrindolos de izquierda a
derecha. En primer lugar se comprueba si los predicados coinciden. Si es as, seguimos
adelante; si no es que no son unificables. Si el predicado concuerda, comenzamos a
comparar los argumentos. Si el primero de ellos coincide en ambos literales,
continuamos con el siguiente y as hasta completar todos los argumentos. Como resulta
obvio, ambos literales deben tener el mismo nmero de argumentos. Para conseguir que
cada argumento de un literal sea coincidente con su homlogo en el otro literal,
debemos buscar una sustitucin que nos permita emparejarlos. La nica condicin que
debe reunir esta sustitucin es que ha de aplicarse a todo el literal, es decir, que la
sustitucin afecta a todo el literal, y no slo al argumento en cuestin. Por decirlo de
una manera sencilla, las sustituciones se van arrastrando a lo largo del proceso de
unificacin.
Ejemplos:
unificar P(x, k) con P(y, z):
Primera sustitucin: (y/x) Resultado: P(y, k) P(y, z)
Segunda sustitucin: (z/k) Resultado: P(y, z) P (y, z)
La sustitucin resultante es composicin de las sustituciones: s = { y/x , z/k}
unificar P(x, x) con P(y, z):
Primera sustitucin: (y/x) Resultado: P(y, y) P(y, z)
Segunda sustitucin: (z/y) Resultado: P(z, z) P (z, z)
La sustitucin resultante es composicin de las sustituciones: s = { z/y , y/x}
Se debe asegurar que no existen variables comunes en ambas clusulas.
Unificar las sentencias R (x, f(g(x)), a) y R (b, y, z)
Trminos desiguales Sustitucin Resultado
t1 = x t2 = b
x/b
R(b, f(g(b)), a) , R(b, y, z)
t1 = f(g(b)) t2 = y
y/f(g(b))
R(b, f(g(b)), a), R(b, f(g(b)), z)
t1 = a t2 = z
z/a
R(b, f(g(b)), a) , R(b, f(g(b)), a)
Las dos clusulas son unificables y la sustitucin resultante es: s ={ z/a , y/f(g(b)) , x/b}
El algoritmo de unificacin permite a su vez la implementacin del algoritmo de
resolucin por refutacin.
avb
-avc
-cvd
c,
-cvd
a}
Ejemplos:
1)
-p v -q v r ,
-r v q , q
Tomando q
-p v r con lo cual es satisfacible ya que no resulta una contradiccin.
2)
-p v -q v r ,
-r v q , p
Tomando p
-q v r , -r v q con lo cual no es satisfacible ya resulta una contradiccin. (esto
puede verse por ejemplo aplicando resolucin)
1)
-p v -q v r ,
-r v q , -q v s ,
Tomando s
-p v -q v r ,
-r v q
Unificacin y Ligaduras
En lo visto anteriormente el smbolo / denota las ligaduras.
Estas son asociaciones resultantes de la unificacin que pueden ser
sistemticamente codificadas.
Hechos y reglas
existentes
ligaduras
Nuevos
hechos
SE
En este caso (color manzana rojo) corresponde con (color manzana rojo) pero no con (color
manzana verde)
Asi que cuando un patron contiene variables de patrn estas actan inicialmente como
comodn. Se observa que al intentar corresponder
(color (? x) rojo)
-patrn-
con
(color manzana rojo )
-dato-
Encadenamiento
Encadenamiento Progresivo.
Correspondencia. Buscar afirmaciones en la base de datos que correspondan con los
antecedentes de una regla.
Resolucin. En caso de que se cumplan los antecedentes instanciar el consecuente
produciendo una nueva afirmacin.
La afirmacin es una expresin comn sin variables de patrn, mientras que los
antecedentes hiptesis puede tener variables de patrn, por lo que podemos hablar de
correspondencia.
Encadenamiento Regresivo.
Correspondencia. Buscar Una Afirmacin en la base de datos que corresponda a una
hiptesis. La afirmacin es una expresin comn sin variables de patrn, mientras que
la hiptesis puede tener variables de patrn, por lo que podemos hablar de
correspondencia.
Unificacin. Buscar una regla cuyo consecuente concuerde con la hiptesis. La
hiptesis y el consecuente pueden tener variables de patrn, por lo que se habla de
unificacin.
Resolucin. Para cada regla cuyo consecuente concuerde con la hiptesis, se intenta
verificar de manera recursiva cada antecedente de la regla, considerando cada una como
una sub-hiptesis. Si se verifica cada antecedente entonces se ha verificado la hiptesis.
El segundo paso nos permite pensar que el encadenamiento progresivo esta
incorporando el procedimiento de encadenamiento progresivo dentro del procedimiento
de encadenamiento regresivo.
Ejemplo de lista de ligaduras en encadenamiento progresivo para una sola regla
nombre de la regla:
IDENTIFICAR
consecuente:
((CRIA es un ESPECIE))
antecedentes:
((ANIMAL es padre de CRIA) (ANIMAL es un ESPECIE))
afirmaciones:
(PLUTO es un PERRO) (PLATA es un CABALLO) (PLATA es padre de RIKI)
(PLATA es padre de DAISY)
Ligaduras iniciales:
((CRIA . DAISY) (ANIMAL . PLATA))
((CRIA . RIKI) (ANIMAL . PLATA))
Ligaduras resultantes:
((ESPECIE . CABALLO) (ANIMAL . PLATA))
((ESPECIE . CABALLO) (ANIMAL . PLATA))
((CRIA . DAISY) (ANIMAL . PLATA))
((CRIA . RIKI) (ANIMAL . PLATA))
Ligaduras extendidas:
((ESPECIE . CABALLO) (ANIMAL . PLATA)(CRIA . RIKI) )
((ESPECIE . CABALLO) (ANIMAL . PLATA) (CRIA . DAISY))