7. Cálculo de predicados (CP) - U

Anuncio
7. Cálculo de predicados (CP)
Es una extensión de la lógica proposicional, en que hay términos definidos
como constantes o variables, y cuantificadores existenciales (∃) o universales (∀)
que definen el alcance de las variables, y hay predicados que se aplican a los
términos.
El cálculo predicativo de primer orden (first order predicate calculus) es
un lenguaje formal con el que se pueden expresar una gran cantidad de
afirmaciones.
Un lenguaje, como por ejemplo el cálculo predicativo, está definido por su
sintaxis. Las expresiones correctas del CP se llaman Fórmulas Bien Formadas
(FBF, o en inglés WFF, well-formed formulas).
7.1. Sintaxis y semántica de fórmulas atómicas
Los componentes elementales de éste lenguaje son símbolos de:
predicados, variables, funciones y constantes. Un símbolo predicativo se usa para
representar una relación en un dominio, por medio de lo cual podemos crear
Fórmulas Atómicas. Por ejemplo supongamos que queremos expresar el hecho
de que alguien escribió algo. Podemos utilizar el símbolo predicativo ESCRIBIR
para denotar la relación entre una persona que escribió y el objeto escrito.
Podemos construir una simple fórmula atómica usando ESCRIBIR y dos términos
denotando al escritor y al objeto escrito. Para representar por ejemplo “Voltaire
escribió “Cándido””, podemos usar la simple fórmula atómica:
ESCRIBIR(VOLTAIRE, CANDIDO)
En esta fórmula atómica, VOLTAIRE y CANDIDO son símbolos
constantes.
En general las fórmulas atómicas se componen de símbolos, predicados y
términos. Un símbolo constante es el tipo de término más sencillo, y se usa para
representar objetos del dominio. Estos objetos pueden ser objetos materiales,
personas, conceptos, o cualquier cosa que queremos nombrar.
Los símbolos variables como x ó y también son términos, y permiten ser
indefinido acerca de las referencias. Fórmulas que usan estos símbolos, como
ESCRIBIR(x, y), serán revisados más adelante en el contexto de la cuantificación.
También podemos componer términos de símbolos de funciones.
Símbolos de funciones denotan funciones en el recorrido. Por ejemplo, el símbolo
de función padre puede ser usado para mostrar el mapeo entre un individuo y su
padre. Podemos utilizar la siguiente fórmula atómica para expresar la oración “la
mamá de Juan está casada con el papá de Juan”:
CASADOS(padre(JUAN), madre(JUAN))
Se utilizan mayúsculas para indicar símbolos predicativos (Ejs: ESCRIBIR,
CASADOS) y constantes (CÁNDIDO, A1, B2). Se utilizan minúsculas para
símbolos de funciones (por ejemplo: padre, madre)
Para representar una oración del lenguaje corriente por una fórmula
atómica, generalmente el predicado se identifica con el verbo de la fase, y los
términos con el sujeto u objeto del verbo. Es común tener varias alternativas de
representación de oración. Por Ejemplo, la oración “la casa es amarilla” se puede
representar por un predicado de un término, como AMARILLO(CASA1), o de dos
términos, como COLOR(CASA1, AMARILLO), o de tres términos, como en
CARACTERISTICA(COLOR, CASA1, AMARILLO), etc. El diseñador de una
representación elige el alfabeto de predicados y términos que usará, y define lo
que significa cada uno de ellos.
En control de procesos, a una función bien formada (fbf) se le puede dar
una interpretación asignando una correspondencia entre los elementos del
lenguaje y las relaciones, términos y funciones del dominio. Estas asignaciones
definen la semántica del leguaje del cálculo predicativo. Una vez que se ha
definido una interpretación para una fórmula atómica, podemos establecer si
ella es verdadera o falsa.
Por ejemplo:
ESCRIBIR(VOLTAIRE, CÁNDIDO) es Verdadero
ESCRIBIR(VOLTAIRE, AJEDREZ_COMPUTACIONAL) es Falso
7.2. Conectivos
Las fórmulas atómicas pueden combinarse para construir fbfs más
complejas usando conectivos tales como “∧”, “∨”, “⇒” y “~”. Por ejemplo:
VIVIR(JUAN, CASA1) ∧ COLOR(CASA1, AMARILLO)
Las fórmulas que se construyen conectando fórmulas mediante ∧'s se
llaman Conjunciones.
Toda conjunción de fbfs también es una fbf. Algo similar ocurre con ∨'s,
las cuales se denominan Disyunciones.
El conectivo "⇒" se usa para
representar afirmaciones tipo "si-entonces". Por ejemplo, la oración "si el auto
es de Juan, entonces es verde" se puede representar como:
DUEÑO(JUAN, AUTO1) ⇒ COLOR(AUTO1, VERDE)
ANTECEDENTE
CONSECUENTE
Nótese que esta implicación viola en ocasiones la noción corriente de
implicancia ("de sentido común"), ya que si el antecedente es falso, la
implicación siempre es verdadera. Por ejemplo, es verdadera la afirmación "si
la luna está hecha de nata, entonces los elefantes pueden volar".
El símbolo "~" indica la negación de una fórmula, cuyo resultado es una
fbf.
7.3. Cuantificadores
Los cuantificadores son elementos para definir el dominio de una función
y/o de una fórmula atómica. Entre ellos, los más importantes, y los que
veremos en este apunte, son “∀” llamado cuantificador universal, que indica
“para todo”, y “ ∃ ” llamado cuantificador existencial, que indica “existe”.
Si se coloca el cuantificador universal (∀x) delante de P(x), sólo será
verdadera para una interpretación dada si el valor de P(x) es verdadero para
todos los valores de x posibles del dominio.
Si ponemos el cuantificador existencial ( ∃ x) delante de P(x), la fórmula
será verdadera para una interpretación dada si hay al menos un elemento del
dominio al que se pueda asignar x, en que la fórmula P(x) sea verdadera.
Por ejemplo, la frase "todos los elefantes son grises" puede
representarse como:
(∀x)[ELEFANTE(x) ⇒ COLOR(x, GRIS)]
Aquí se está cuantificando la implicación, y x es la variable cuantificada.
El alcance ("scope") del cuantificador es la secuencia de fórmulas sobre la que
se aplica.
Otro ejemplo. "Hay alguien que escribió Ajedrez computacional", puede
ser representada como:
( ∃ x)ESCRIBIR(x, AJEDREZ_COMPUTACIONAL)
Cualquier expresión obtenida cuantificando una fbf sobre una variable,
también es una fbf. Si una variable en una fbf es cuantificada, se dice que es
una Variable Limitada (bound variable). Si no, se dice que es una variable libre
(free variable).
Las fbf que tienen todas las variables limitadas se denominan Oraciones
(o Fórmula Bien Formada Cerrada).
Nótese que si hay cuantificadores en una fbf, no será siempre posible
encontrar su valor de verdad. Por ejemplo, en (∀x)P(x), si el dominio es infinito,
no terminaríamos nunca el proceso de probar que la fbf es verdadera en todos
los casos.
Esta versión de CP se llama de primer orden porque no permite
cuantificación sobre símbolos predicativos o de función. Así, fórmulas como
(∀P)P(A) no son fbf en CP de primer orden.
7.4. Propiedades de FBF
Usando las fórmulas sintácticas recién descritas informalmente,
podemos construir fbf arbitrariamente complejos, como por ejemplo:
1. (∃x){(∀y )[( P( x, y ) ∧ Q( x, y )) ⇒ R( x) ]}
2. ~ (∀q){(∃x[P(x) ∨ R(q)]}
Usamos los símbolos “[“, “{“ y “(“ para delimitar o agrupar los
componentes de las fbfs, para "mejorar y simplificar su lectura" y eliminar
cualquier ambigüedad.
Algunos ejemplos que no son fbf son:
1. f [ P(A) ]
2. A∨ ~⇒ (∀ ~)
Dada una interpretación, los valores de verdad de una fbf (excepto las
reglas que contienen cuantificadores) pueden ser computadas con las reglas
antes descritas. Cuando los valores de verdad se obtienen de esta forma,
estamos usando un método de tablas de verdad.
Por ejemplo, si X1 y X2 son 2 fbfs cualquiera, entonces los valores de
verdad de las expresiones compuestas generadas con estas fbfs, están dados
por la tabla de verdad (truth table) descrita en la Tabla 7.1.
Si los valores de verdad de dos fbf son iguales (para todas las
interpretaciones) se dice que son Equivalentes.
Tabla 7.1. Tabla de verdad para funciones bien formadas.
X1
V
F
V
F
X2
V
V
F
F
X1 ∨ X2
V
V
V
F
X1 ∧ X2
V
F
F
F
X1 ⇒ X2
V
V
F
V
~X1
F
V
F
V
Usando la tabla de verdad mencionadas en la Tabla 7.1 podemos
establecer las siguientes equivalencias:
~ (~ x1) ⇔ x1
x1 ∨ x 2 ⇔ ~ x1 ⇒ x 2
~ ( x1 ∧ x 2) ⇔ ~ x1∨ ~ x 2
 Leyes de De Morgan
~ ( x1 ∨ x 2) ⇔ ~ x1∧ ~ x 2
x1 ∧ (x2 ∨ x3) ⇔ (x1 ∧ x2) ∨ (x1 ∧ x3)
 Leyes distributivas
x1 ∨ (x2 ∧ x3) ⇔ (x1 ∨ x2) ∧ (x1 ∨ x3)
x1 ∧ x 2 ⇔ x 2 ∧ x1
Leyes conmutativas
x1 ∨ x 2 ⇔ x 2 ∨ x1
(x1 ∧ x2) ∧ x3 ⇔ x1 ∧ (x2 ∧ x3)
 Leyes asociativas
(x1 ∨ x2) ∨ x3 ⇔ x1 ∨ (x2 ∨ x3)
x1 ⇒ x 2 ⇔ ~ x 2 ⇒~ x1
Ley " contrapositiva"
En cuanto a cuantificadores podemos establecer las siguientes
equivalencias:
~ (∃x) P( x) ⇔ (∀x ) [ ~ P ( x)]
~ (∀x ) P( x) ⇔ (∃x ) [ ~ P ( x)]
(∀x) P( x) ⇔ (∀y ) P( y ) 

 (*)
 (∃x ) P ( x ) ⇔ (∃y ) P ( y ) 
Las propiedades (*) muestran que las variables son arbitrarias y pueden
ser reemplazadas por cualquier símbolo que no esté ya en la expresión.
Otras propiedades relacionadas con cuantificadores:
(∀x)[P( x) ∧ Q ( x)] ⇔ (∀x) P( x) ∧ (∀y )Q( y )
(∃x)[P ( x) ∨ Q ( x)] ⇔ (∃x) P( x) ∨ (∃y )Q ( y )
7.5. Ejemplos
Veamos algunos ejemplos que muestran la versatilidad del Cálculo
Predicativo (C.P.) como un lenguaje útil para describir situaciones del lenguaje
corriente:
1) "Cada ciudad tiene un perrero que ha sido mordido por todos los perros de la
ciudad"
(∀x ){CIUDAD (x ) ⇒ (∃y ){PERRERO ( x, y ) ∧ (∀z ){[PERRO (z ) ∧ VIVE _ EN (x, z )] ⇒ MORDIDO ( y, z )}}}
2) "Para todo conjunto x existe un conjunto y, tal que la cardinalidad de y es
mayor que la cardinalidad de x".
(∀x ){CONJ (x ) ⇒ (∃y )(∃u )(∃v)[CONJ ( y ) ∧ CARD ( x, u ) ∧ CARD ( y, v) ∧ MAY (v, u )]}
3) "Todos los bloques que están sobre bloques que han sido movidos, o que
están pegados a bloques que han sido movidos, también han sido movidos".
(∀x )(∀y){{BLOQ ( x) ∧ BLOQ ( y ) ∧ [SOBRE (x, y ) ∨ PEGAD ( x, y)] ∧ MOVIDO( y )} ⇒ MOVIDO( x)}
7.6. Reglas de Inferencia
En C.P. existen reglas de inferencia que pueden aplicarse sobre ciertas
"fórmulas bien formadas" (fbfs) y conjuntos de fbfs para producir nuevas fbfs.
Una regla de inferencia importante es el Modus Ponens (W1 ⇒ W2). Otra regla
es la Especificación Universal, que produce la fbf W(A) a partir de la fbf
(∀x)W(x), en que A es una constante cualquiera. P.ej. usando las dos reglas de
inferencia anteriores se obtiene la fbf W2(A), a partir de las fbfs (∀x)[ W1(x) ⇒
W2(x)] y W1(A).
Las reglas de inferencia producen fbfs a partir de otras dadas. En C.P.
estas fbfs se llaman Teoremas, y la secuencia de aplicación de reglas de
inferencia en la derivación constituyen las Pruebas del Teorema. Es decir,
algunas tareas de resolver problemas pueden visualizarse como la tarea de
encontrar la prueba para un teorema.
7.7. Unificación
Para probar teoremas que incluyen fórmulas cuantificadas, a menudo es
necesario "asimilar" (Eng.: match) ciertas sub-expresiones. Usando el ejemplo
anterior, para producir W2(A) a partir de las fbfs (∀x)[ W1(x) ⇒ W2(x)] y
W1(A), es necesario encontrar la sustitución "A por x" que identifica a W1(A)
con W1(x). Encontrar sustituciones de variables para igualar expresiones es un
proceso muy importante en Inteligencia Artificial (IA), que se llama Unificación.
Para describir este proceso, veamos primero mecanismos de Sustitución.
Los términos de una expresión pueden ser símbolos de variables o
constantes, o bien ser expresiones funcionales (consistentes en símbolos de
funciones y términos). Así, una instancia de sustitución de una expresión se
obtiene sustituyendo términos para variables en esa expresión. Por ejemplo,
cuatro instancias de P[x, f(y),B] son:
1) P[z, f(w),B]
2) P[x, f(A),B]
←
"variante alfabética" (simple sustitución de
variables)
3) P[g(z), f(A),B]
4) P[C, f(A),B]
←
"instancia concreta" (Eng.: ground instance) (ninguno
de los términos contiene variables).
Podemos representar las sustituciones por un conjunto de pares ordenados
s = {t1/v1, t2/v2, ...., tn/vn}, en que ti/vi quiere decir que el término ti se reemplaza
por la variable vi en toda la expresión. Una variable no puede ser reemplazada
por un término que incluya la misma variable.
Las sustituciones usadas anteriormente en P[x, f(y),B] son:
1)
2)
3)
4)
s1 = {z/x, w/y}
s2 = {A/y}
s3 = {g(z)/x, A/y}
s4 = {C/x, A/y}
Para denotar una instancia de sustitución de una expresión E, usando una
sustitución s, anotamos Es. De este modo en el primer caso de ejemplo
anterior tenemos lo siguiente:
1) P[z, f(w),B]
= P[x, f(y),B]s1.
La composición de dos sustituciones s1 y s2 se denota s1s2, que es la
sustitución obtenida aplicando s2 a los términos de s1 y agregando también los
pares de s2 que contengan variables que no aparecen en s1. Ejemplo:
{g(x,y)/z}{A/x, B/y, C/w, D/z} = {g(A, B)/z, A/x, B/y, C/w, D/z}.
Se puede mostrar que aplicar sucesivamente s1 y s2 a una expresión L
es lo mismo que aplicar s1s2 a L, es decir,
(Ls1)s2 = L(s1s2).
También puede mostrarse que la composición de sustituciones es
asociativa, es decir:
(s1s2)s3 = s1(s2s3).
En general, las sustituciones no son conmutativas.
Si una sustitución s se aplica a todos los elementos de un conjunto {Ei}
de expresiones, el conjunto de instancias de sustitución lo denotamos por {Ei}s.
Se dice que un conjunto de expresiones {Ei} es Unificable si existe una
sustitución s tal que:
E1s = E2s = E3s = ....
En ese caso se dice que s es un unificador de {Ei} porque su aplicación
reduce al conjunto a un sólo elemento (singleton). Por ejemplo, s = {A/x, B/y}
unifica a: {P[x, f(y),B],P[x, f(B),B]} al obtener {P[A, f(B),B] }.
Si bien s = {A/x, B/y} es un unificador del conjunto { P[x, f(y),B], P[x,
f(B),B] }, en algún sentido no es el más sencillo. El Unificador Más General o
Más Sencillo (UMG) (Eng.: most general unifier: mgu), g de {Ei}, es aquel que
tiene la propiedad tal que si s es un unificador cualquiera de {Ei} que obtiene
{Ei}s, entonces existe una sustitución s' tal que {Ei}s = {Ei}gs'. Más aún, la
instancia común producida por un UMG es única excepto por variantes
alfabéticas.
Ejemplos de instancias de aplicación de UMG a conjuntos de literales que son
unificables:
CONJUNTOS DE LITERALES
INSTANCIAS DE SUSTITUCIÓN POR
umg
{P(x), P(A)}
{P[f(x), y, g(y)], P[f(x), z, g(x)]}
{P[f(x, g(A,y)), g(A,y)], P[f(x,z), z]}
P(A)
P[f(x), x, g(x)]
P[f(x, g(A,y)), g(A,y)]
Típicamente la unificación se utiliza para descubrir si un literal puede
asimilarse a otro. Este proceso se ha llamado a veces "pattern matching"
(reconocimiento de patrones). Juega un rol importante en sistemas de IA. El
proceso de unificación es más general que lo que se llama usualmente
reconocimiento de patrones, puesto que se permite que aparezcan variables en
ambas expresiones.
7.8. Validación
Una fbf que es verdadera para todas las interpretaciones posibles se
denomina Válida. Una fbf concreta y válida generalmente se llama Tautología.
Así por ejemplo, usando una tabla de verdad se establece que la fbf P(A) ⇒
[P(A) v P(B)] tiene el valor de verdad V con cualquier interpretación, por lo
tanto es válida. Las tablas de verdad siempre pueden ser usadas para
determinar la validez de cualquier fbf que no contenga variables. Es un método
exhaustivo: se prueba que tenga valor V para todos los valores posibles de las
fórmulas atómicas que contenga la fbf.
Si una fbf contiene cuantificadores, entonces no siempre se puede
establecer si es válida. Se ha mostrado que es imposible encontrar un método
general para establecer la validez de una expresión cuantificada, y por esta
razón el C.P. se dice que es Indecidible (Eng.: undecidable).
Sin
embargo, sí pueden decidirse cierta clases de fórmulas que contienen
cuantificadores; se habla de Subclases Decidibles.
También se ha visto que si una fbf es válida, entonces existe un
procedimiento para verificar la validez de esa fbf, en tanto que si se aplica el
mismo procedimiento a fbfs que no son válidas se puede llegar a procesos
interminables. Luego, se dice que el C.P. es Semi-decidible.
Si una misma interpretación hace que cada fbf en un conjunto de fbfs
tenga valor V, entonces decimos que esa interpretación satisface al conjunto de
fbfs.
Una fbf X es una Consecuencia Lógica (Eng.: logically follows) de un
conjunto de fbfs S si todas las interpretaciones que satisfacen S también
satisfacen X.
Por ejemplo es fácil ver que la fbf (∀x)(∀y)[P(x) v Q(y)] es consecuencia
lógica del conjunto {(∀x)(∀y)[P(x) v Q(y)], (∀z)[R(z) v Q(A)]}. También, la fbf
P(A) es consecuencia lógica de (∀x) P(x). También ocurre que (∀x) Q(x) es
consecuencia lógica del conjunto {(∀x)[~P(x) v Q(x)], (∀x) P(x)}.
7.9. Resolución
La Resolución es una importante herramienta de inferencia que se
puede aplicar a una clase de fbfs llamadas Cláusulas, que consistan en
fórmulas atómicas, y negaciones de fórmulas atómicas, asociadas por “ ∨ ”
(ORs) (Eng.: clause: wff consisting of a disjunction of literals).
Con el objetivo que explicar de mejor manera el procedimiento de
transformación utilizaremos un ejemplo para poder desarrollar las etapas que
ella conlleva. Consideremos el siguiente ejemplo:
(∀x ){P(x ) ⇒ {(∀y )[P(y ) ⇒ P(f (x, y ))]∧ ~ (∀y )[Q(x, y ) ⇒ P(y )]}}.
El proceso de conversión consta de las etapas siguientes:
1) Eliminar “⇒” (sustituir por ~ ∨ ):
(∀x ){~ P(x ) ∨ {(∀y )[~ P(y ) ∨ P(f (x, y ))]∧ ~ (∀y )[~ Q(x, y ) ∨ P(y )]}}
2) Reducir el alcance de “~”:
Que aplique a no más de una fórmula atómica (hacer uso en forma
reiterativa de las leyes de De Morgan y otras):
(∀x ){~ P(x ) ∨ {(∀y )[~ P(y ) ∨ P(f (x, y ))] ∧ (∃y ) ~ [~ Q(x, y ) ∨ P(y )]}}
(∀x ){~ P(x ) ∨ {(∀y )[~ P(y ) ∨ P(f (x, y ))] ∧ (∃y )[Q(x, y )∧ ~ P(y )]}}
3) Estandarización de Variables:
Dentro del alcance de cada cuantificador, la variable cuantificada es
arbitraria. Puede ser reemplazada por otra variable (no preexistente) dentro
del alcance del cuantificador, sin cambiar el valor de verdad de la fbf. Es
decir, se trata de renombrar las variables, para asegurar que cada
cuantificador tenga una variable exclusiva. Así por ejemplo, podemos
reemplazar la variable asociada a
(∀x )[P(x ) ⇒ (∃y )Q(y )] .
∃
en
(∀x )[P(x ) ⇒ (∃x )Q(x )] ,
por
Estandarizar las variables en el ejemplo significa:
(∀x ){~ P(x ) ∨ {(∀y )[~ P(y ) ∨ P(f (x, y ))] ∧ (∃w )[Q(x, w )∧ ~ P(w )]}}.
4) Eliminar “∃” (cuantificadores existenciales):
Considere la fbf: (∀y) [(∃x) P(x,y)]. Puede leerse como “para todo y,
existe un valor x (posiblemente dependiente de y) tal que P(x, y ) . Nótese
que por estar el “∃” dentro del alcance de “∀”, existe la posibilidad que x
dependa del valor de y. Si hacemos explícita esa dependencia, podemos
establecer una función g(y) que mapea cada valor de y en un x “existente”
(“∃”). Una función así definida se denomina Función de Skolem. Aplicando
Skolem, reemplazamos el cuantificador existencial, y la expresión se
convierte en (∀y) P[g(y),y].A esto se le suele llamar “eskolemizar”.
Una regla general para eliminar cuantificadores existenciales de una fbf
es reemplazar cada ocurrencia de la variable asociada a “∃” por una función
Skolem, cuyos argumentos son todas aquellas variables cuantificadas en
forma universal (∀) cuyo alcance incluya el alcance del “∃” que se quiera
eliminar. Debe cuidarse que se usen símbolos nuevos para las funciones
Skolem.
Por ejemplo, en el caso:
[(∀w )Q(w )] ⇒ (∀x ){(∀y ){(∃z )[P(x, y, z )] ⇒ (∀u )R (x, y, u, z )}}
, podemos eliminar (∃z) y llegar a:
[(∀w )Q(w )] ⇒ (∀x ){(∀y )[P(x, y, g(x, y )) ⇒ (∀u )R (x, y, u, g(x, y ))]}
Si no hay variables que tengan cuantificadores universales dentro del
alcance de “∃”,
usamos una función Skolem sin argumentos (es decir,
una constante). Así, (∃x )P(x ) queda como P(A), en que A se refiere a la
entidad que sabemos existe (usar símbolo de constante nuevo). Siguiendo
con el ejemplo que veníamos elaborando, queda:
(∀x ){~ P(x ) ∨ {(∀y )[~ P(y ) ∨ P(f (x, y ))] ∧ [Q(x, g(x ))∧ ~ P(g(x ))]}} ,
, en donde g(x) es una función de Skolem.
5) Trasladar los “∀” (cuantificadores universales):
Lo que se debe realizar es trasladar todos los cuantificadores
universales al comienzo de la fbf, permitiendo que tengan el alcance sobre
toda la fbf (a esta altura cada “∀” tiene su propia variable). Se dice que la fbf
está en forma Prenex (inglés). Es decir, una serie de cuantificadores
(prefijo, o prefix) seguido por una fórmula sin cuantificadores (llamada
Matriz). En el ejemplo:
(∀x )(∀y ){~ P(x ) ∨ {[~ P(y ) ∨ P(f (x, y ))] ∧ [Q(x, g(x ))∧ ~ P(g(x ))]}}
6) Poner la matriz de “forma conjuntiva normal”:
Se debe reducir la fbf a una serie de expresiones unidas por “ ∧ ”.
Ejemplos son:
i)
ii)
iii)
iv)
[P(x ) ∨ Q(x )] ∧ [~ P(w )∨ ~ R (y)] ∧ Q(x, y)
P (x ) ∨ Q (x , y )
P (x ) ∧ Q (x , y )
~ R (y )
Para llegar a esta forma podemos utilizar las reglas distributivas, por
ejemplo. En el ejemplo:
(∀x )(∀y ){[~ P(x ) ∨ [~ P(y ) ∨ P(f (x, y ))]] ∧ [~ P(x ) ∨ [Q(x, g(x ))∧ ~ P(g(x ))]]};
(∀x )(∀y ){[~ P(x )∨ ~ P(y ) ∨ P(f (x, y ))] ∧ [~ P(x ) ∨ Q(x, g(x ))] ∧ [~ P(x )∨ ~ P(g(x ))]}.
7) Eliminar “∀”:
Como todos los cuantificadores quedaron a la izquierda, el orden ya no
importa. Además, en una fbf, las variables son finitas Se asume que todas
las variables de la matriz están universalmente cuantificadas.
8) Eliminar “∧”:
Reemplazamos (x1 ∧ x2) por el conjunto de fbfs {x1, x2}. Como
resultado, obtenemos un conjunto de expresiones “cláusulas” (fórmulas
atómicas, negadas o no, asociadas por “v”s). En el ejemplo obtendríamos el
siguiente conjunto de fbfs:
{
P ( x )∨
P ( y ) ∨ P [ f ( x, y ) ] , P ( x ) ∨ Q [ x, g ( x ) ] , P ( x ) ∨
P( g ( x))}
9) Cambiar nombres de variables:
Esta etapa se realiza para que no se repitan en las diferentes
expresiones (Eng. standardizing the variables apart).
De esta forma, reemplazando la variable x en cada una de las fbf del
conjunto obtenido anteriormente por x1, x2 y x3 respectivamente, en el
ejemplo que estamos desarrollando las fbfs quedan de la siguiente manera:
•
•
•
~ P(x1)∨ ~ P(y ) ∨ P[f (x1, y )]
~ P (x 2 ) ∨ Q[x 2, g(x 2 )]
~ P(x3)∨ ~ P[g(x3)]
Si se utiliza resolución como regla de inferencia en un sistema para
demostrar teoremas, el conjunto de fbf que queremos usar para probarlo se
convierte primero a expresiones de este tipo.
7.10. Resolución de cláusulas concretas (Eng.: ground clauses)
Recordemos que una cláusula concreta es aquella que no tiene
variables en el literal.
En la Tabla 7.2 se muestran la resolución de distintas cláusulas
parentales.
Tabal 7.2. Cláusulas parentales y sus respectivas resoluciones.
Cláusula Parental
1) P y ~P ∨ Q
(es decir, P ⇒ Q )
2) P ∨ Q y ~P ∨ Q
Resolución
Q
Comentario
Modus Ponens.
La cláusula Q ∨ Q
“colapsa” a Q. Esta
resolución se llama fusión
(merge).
Aquí hay dos resoluciones
3) P ∨ Q y ~P ∨ ~Q
Q ∨ ~Q y P ∨ ~P
posibles,
ambas
tautologías.
4) ~P y P
La “cláusula vacía” es
NIL (conj. vacío, φ )
señal
de
una
contradicción.
5) ~P ∨ Q (es decir P ⇒ Q ) ~P ∨ R (es decir P ⇒ R ) Encadenamiento.
y
~Q ∨ R (es decir Q ⇒ R )
Q
Para usar estas simples reglas cuando las cláusulas contienen variables
hay que trabajar con las sustituciones adecuadas.
7.11. Ejemplo: “Puzzle del club alpino”
Veamos un ejemplo de unificación y resolución, el llamado “Puzzle del
Club Alpino” (de N. J. Nilsson, “Problem-Solving Methods in AI", McGraw-Hill,
1971), citado por Bonissone.
El “Puzzle del Club Alpino” tiene el siguiente enunciado:
“Antonio, Miguel y Juan pertenecen al Club Alpino. Todos los miembros del
Club Alpino son esquiadores, escaladores o ambos. A ningún escalador le
gusta la lluvia, y a todos los esquiadores les gusta la nieve. A Miguel le
disgusta todo aquello que le gusta a Antonio, y le gusta todo lo que a Antonio le
disgusta. A Antonio le gusta la lluvia y la nieve. ¿Existe algún miembro del Club
Alpino que sea escalador pero no esquiador? ¿Quién?"
La primera etapa para resolver el problema es definir un conjunto de
predicados y constantes para reformular el puzzle. Las constantes son Antonio,
Miguel, Juan, nieve, lluvia. Los predicados se definen así:
G(x,w):
A(x) :
Q(x) :
C(x) :
A “x” le gusta “w”
“x” pertenece al Club Alpino
“x” es un esquiador
“x” es un escalador
El puzzle se reformula de la manera que se especifica en la Tabla 7.3.
Tabla 7.3. Reformulación del problema del Puzzle del Club Alpino utilizando
cláusulas entre los predicados.
F1 : A(Antonio) ∧ A(Miguel) ∧ A(Juan)
F2 :
F3 :
F4 :
F5 :
F6 :
F7 :
Q
:
: Antonio, Miguel y Juan pertenecen al
Club Alpino.
: Todos los miembros del Club son
∀x[A (x ) ⇒ (Q(x ) ∨ C(x ))]
esquiadores o escaladores o ambos.
: A ningún escalador le gusta la lluvia.
∀x[C(x ) ⇒~ G (x, lluvia )]
: A todos los esquiadores les gusta la
∀x[Q(x ) ⇒ G (x , nieve )]
nieve.
:
A Miguel le disgusta todo lo que le gusta
∀x[G (Antonio, x ) ⇒~ G (Miguel, x )]
a Antonio
: A Miguel le gusta todo lo que le disgusta
∀x[~ G (Antonio, x ) ⇒ G (Miguel, x )]
a Antonio
:
G(Antonio, nieve) ∧ G(Antonio, A Antonio le gusta la lluvia y la nieve
lluvia)
: Pregunta: ¿Existe algún miembro del
∃w [A (w ) ∧ C(w )∧ ~ Q(w )]
Club Alpino que sea escalador pero no
esquiador?
Apliquemos los pasos de resolución:
1) Eliminar “⇒”:
Al eliminar la relación “⇒” obtenemos las relaciones que se muestran en la
Tabla 7.4.
Tabla 7.4. Relaciones obtenidas al eliminar la relación “⇒”.
F2
: ∀x[~ A(x ) ∨ (Q(x ) ∨ C(x ))]
F3 : ∀x[~ C(x )∨ ~ G (x, lluvia )]
F4 : ∀x[~ Q(x ) ∨ G (x , nieve )]
F5 : ∀x[~ G (Antonio, x )∨ ~ G (Miguel, x )]
F6 : ∀x[G (Antonio, x ) ∨ G (Miguel, x )]
2) Reducir alcance de ~: No hay cambios.
3) Estandarización de variables: No hay cambios.
4) Eliminar “∃”: Tampoco se aplica, por el momento no consideramos Q.
5) Trasladar “∀” al comienzo: (en forma prenex): No hay cambios.
6) Convertir la matriz a su “forma conjuntiva normal” (una conjunción finita de
disyunciones de predicados, con y sin negaciones): No hay cambios.
7) Eliminar “∀”.
8) Eliminar “∧”.
Dadas todas las etapas mencionadas el conjunto de fbfs queda de la
siguiente forma mostrada en la Tabla 7.5.
Tabla 7.5. Relaciones obtenidas al eliminar la relación “∧”.
C '4
:
:
:
:
C5'
:
C '6
C1
C2
C3
A(A)
A(M)
A(J)
}
de F1
:
~A(x) ∨ Q(x) ∨
C(x)
~C(x)
∨
~G(x,lluvia)
~Q(x) ∨ G(x,nieve)
de F4
C '7
:
~G(A,x) ∨ ~G(M,x)
de F5
'
8
:
de F6
C9'
:
G(A,x) ∨ G(M,x)
G(A,lluvia)
C10
:
G(A,nieve)
C
}
de F2
de F3
de F7
9) Como última etapa, se cambian las variables, para que no se repitan en las
expresiones. Así, las fórmulas se han transformado a su forma normal.
7.12. Árbol de refutación
El árbol de refutación es una manera de resolver problemas planteados en
formulación de fbfs, una vez que se esta se ha reducido a un conjunto de
cláusulas.
Este tipo de mecanismo de resolución de problemas es adecuado para
probar la consistencia de un grupo de condicionantes, por ejemplo en tareas de
verificación de programas.
Por otra parte, la resolución no es adecuada para tareas interactivas, como
por ejemplo aplicaciones de diagnóstico, en que el sistema trata de identificar el
trozo de evidencia faltante que sea más relevante para completar el análisis.
En general, en este tipo de resoluciones de problemas no se sigue
ninguna estrategia para guiar la búsqueda de unificadores y resoluciones. Si
faltase un eslabón en el “árbol de refutación”, sería difícil (para un sistema de
razonamiento basado en resolución) identificar la información que falta para
tratar de obtenerla de alguna forma.
Por otro lado, no existe una manera clara de encontrar la solución. Mejor
dicho, instintivamente se debe relacionar las fbfs obtenidas para poder tratar de
encontrar una solución.
Para poder dejar claro el mecanismo que se debe realizar, a continuación
se muestra el análisis del árbol de refutación del ejemplo del “Puzzle del Club
Alpino”.
Antes que todo, antes de aplicar el principio de relación, negamos la
pregunta Q y la agregamos como cláusula al conjunto de cláusulas
normalizadas:
~ Q = ∀w [~ A(w )∨ ~ C(w ) ∨ Q(w )] .
Así generamos el Árbol de Refutación (Eng.: refutation tree) la cual
demuestra la existencia de una solución, partiendo de la negación de la
'
) al conjunto de cláusulas original, y
pregunta Q, agregando esta negación ( C11
demostrando que el conjunto de cláusulas, aumentado ( C1 a C11 ) no puede ser
satisfecho, es decir, aplicando unificación y resolución, se llega a un conjunto
vacío.
Figura 7.1. Árbol de Refutación para demostrar la solución del problema del Puzzle del Club
Alpino.
Observando la Figura 7.1 se prueba que la solución existe, en la cual se
desarrolla el árbol de refutación mencionado anteriormente. Para obtener la
solución, se crea una tautología tomando la pregunta original Q y su negación
en disyunción, es decir C11 = Q∨ ~ Q . Esta tautología se agrega al conjunto de
cláusulas C1 a C10 . Siguiendo los mismos pasos del “árbol de refutación”,
produciría el “árbol de refutación modificado”, que dará la respuesta a la
pregunta Q. La Figura 7.2 muestra el árbol de refutación desarrollado para
obtener la solución.
Figura 7.2. Árbol de refutación desarrollado para obtener la solución del problema del Puzzle
del Club Alpino
Descargar