Consultar ensayos de calidad


LÓGICA MATEMATICA - conceptos basicos, resolución y unificación, Métodos



LÓGICA MATEMATICA.
Dado que el Lenguaje Natural, aunque es potente, resulta muy ambiguo, nos interesa encontrar un lenguaje mas sencillo, sin ambigüedades que nos permita realizar razonamientos y generalizaciones. Por ello, es necesario introducirnos en la formalización del Calculo Proposicional, que, aunque no cuenta con toda la potencia necesaria para describir el mundo, es valido como primera aproximación. También veremos algunos conceptos delCalculo de Predicados y, por supuesto, nos centraremos en definir y ver cómo funciona el Método de Resolución.
Conceptos basicos.
Para comprender los principios de la lógica matematica en el campo del Calculo Proposicional, necesitamos conocer una serie de conceptos basicos que se describen a continuación:


* Atomo: También llamado Fórmula Atómica o Enunciado Simple. Permite la formalización de una frase declarativa que no se puede descomponer en frases mas simples. Para denotar atomos se utilizan las letras p,q, r, etc.
* Conectiva: Operador que permite construir sentencias compuestas a partir de atomos. Las principales conectivas lógicas son: Ø , Ù , Ú , ® .
* Enunciado: También llamado Fórmula. Es una expresión realizada con atomos y conectivas lógicas, siguiendo unas determinadas normas. Para denotar enunciados se utilizan las letras A, B, C, etc.
* Deducción: Consiste en una lista de enunciados que, o bien son dados previamente, en este caso sellaman Premisas, o bien se han obtenido de enunciados anteriores mediante la utilización de un conjunto finito de reglas denominadas Reglas de Inferencia.
Dada una serie de premisas, a través de las reglas de inferencia, podemos llegar a un enunciado que podemos denominar enunciado Conclusión. El conjunto de pasos para llegar a este enunciado a partir de las premisas usando dichas reglas de inferencia, compone un algoritmo general que permite automatizar el proceso de demostración. De esta forma, obtenemos un demostrador automatico de teoremas que es, justamente, en lo que consiste la maquina PROLOG.
Aunque mediante la Lógica Proposicional podemos describir muchas situaciones, existen otras imposibles de representar. Necesitamos introducirnos, ademas, en la Lógica de Predicados. Podemos considerar la Lógica Proposicional como un subconjunto de la Lógica de Predicados o de Primer Orden. Por tanto, a las definiciones anteriores, hemos de añadir otras nuevas que nos permitan comprender los métodos que se explicaran en apartados posteriores.
* Símbolos: Existen varios tipos:
* Individuales o Constantes: Representan valores concretos. C=.
* Variables: Se pueden sustituir por constantes. V=.
* Funciones: Aplicación que asocia una serie de constantes con otra constante. F=.
* Predicados: Función de resultado Verdadero o Falso. Pred=.
* Relaciones:Representan relaciones o cuantificaciones. Rel=
* Signos de puntuación: Permiten agrupar o separar otros símbolos. Pun=
* Términos: Se pueden definir de varias maneras. A continuación se exponen las distintas formas de definición de términos:
* Una constante: a, c.
* Una variable: x, z.
* Si f es un símbolo de función y t1, t2  tn son términos, entonces f (t1, t2,,, tn) es un término, por ejemplo g(a, f(x)).
* Fórmulas: Se definen como:
* Si R es un símbolo de relación y t1, t2  tn son términos, entonces R (t1, t2,,, tn) es una fórmula.
Ejemplo: |
f(a, x) Ù Ø g(x), ' x (g(x) Ú a) ® [f(a, v) ÙP(b Ú c)] |
 Si A y B son dos fórmulas y R es un símbolo de relación, entonces R(A, B) también es una fórmula.
Ejemplo:
[' x (g(x) Ú a) ® (f(a, v) Ù P(b Ú c))] Ú Ø (f(a, x) Ù Øg(z)) |
Sentencias: Se definen como fórmulas en las que ninguna de las variables que la componen tiene una o mas ocurrencias libres, o sea, todas las variables de la fórmula son ligadas. Es necesario que definamos, por tanto, lo que son variables libres y ligadas.
* Una ocurrencia de una variable x es ligada en una fórmula si y sólo si se da una de las siguientes condiciones
1. La variable x esta inmediatamente después de un símbolo ' ó $ .
2. La variable x esta en el radio de acción de un cuantificador ' x ó $ x
El radio de acción de uncuantificador en una fórmula abarca al término inmediatamente siguiente, haciéndose imprescindible el uso de paréntesis para aumentar su radio de acción.
Ejemplos: |
' x (f(x) Ú g(z)). El cuantificador abarca a f(x) y g(z).' x h(x) Ú f(a, v, x). El cuantificador abarca sólo a h(x). |
Una variable es libre en una fórmula si no tiene ninguna ocurrencia ligada en la misma. En el siguiente ejemplo, la variables v es libre, puesto que no tiene ninguna ocurrencia ligada. Sin embargo, la x presenta una ocurrencia ligada, ya que g(x) cae dentro del radio de acción del cuantificador ' x.
Ejemplo: |
' x [P(g(x)) Ú R(a)] ® [f(a, v) Ù Q(b Ú c)] |
 Sustituciones: Dado el conjunto de variables V y el conjunto de términos Term, una sustitución se define como la aplicación que se muestra en la Ec 1 y se suele denotar como s=. De dicha definición podemos concluir dos cosas:
* Sólo son validas aquellas sustituciones que transforman una variable en una constante, en otra variable o en una función, es decir, en términos.
* La sustitución de una variable afecta a todas las ocurrencias de la misma.
*

Ec 1
Resolución y unificación. Métodos.
La Deducción Natural consiste en un sistema de reglas de inferencia que permite construir deducciones, es decir, a partir de 'algo' podemos deducir o 'llegar a' 'otra cosa', hasta que encontramos una conclusión. Se trata de un método puramente sintactico donde sólonos ocupamos de la manipulación de símbolos. Es un método interesante para construir demostraciones, sin embargo es difícilmente mecanizable.
Por otro lado, como hemos visto, es facil representar hechos del mundo real mediante la lógica proposicional y mediante la lógica de predicados. Ademas mediante la lógica de predicados podemos representar el conocimiento que tenemos sobre un cierto mundo finito poniéndolo en forma de sentencias y disponemos de un mecanismo para razonar con ese conocimiento. Sin embargo, lo que para el ser humano resulta trivial, deducir una sentencia a partir de otra, para la maquina puede llegar a ser computacionalmente muy costoso e, incluso, inviable. Los estudios, por tanto, se han centrado en conseguir un método de demostración que se puede ejecutar en un tiempo finito, y que en dicho tiempo, de forma eficiente, nos proporcione una solución acertada.
El Método de Resolución [Robinson, 1965], es un intento de mecanizar el proceso de deducción natural de esa forma eficiente. Las demostraciones se consiguen utilizando el método refutativo (reducción al absurdo), es decir lo que intentamos es encontrar contradicciones. Para probar una sentencia nos basta con demostrar que su negación nos lleva a una contradicción con las sentencias conocidas (es insatisfactible). Si la negación de una sentencia entra en contradicción con los hechos de nuestra base de conocimiento es porque lo contrario, esdecir, la sentencia original era verdadera y se puede deducir lógicamente de las sentencias que componen dicha base de conocimientos.
Existen distintas Estrategias de Resolución: sistematica, con conjunto soporte, unitaria, primaria y lineal.
En este apartado formularemos detalladamente el método de Resolución por Refutación Lineal. Para ello, es necesario conocer el proceso de conversión a forma clausal, ya que las clausulas con las que se trabaja en esta técnica deben tener una forma específica. Por otro lado, hemos de definir también el proceso o algoritmo de Unificación, paso imprescindible en este método de Resolución.

Conversión a forma clausal.
El proceso de conversión a forma clausal consiste en transformar las sentencias y fórmulas en clausulas, cuya principal característica, al nivel de representación, es la ausencia casi total de símbolos de relación. En una clausula sólo apareceran disyunciones 'Ú '.
De esta manera, el primer paso sera transformar todas las sentencias a una forma canónica llamada forma normal conjuntiva [Davis y Putnam, 1960], a partir de la cual obtendremos el conjunto de clausulas. Así, podemos definir una clausula, mas formalmente, como una fórmula en forma normalizada conjuntiva que no tiene ninguna conectiva. Esta transformación la vamos a realizar en varios pasos
1. Primero pasaremos las sentencias a Forma Normal Prenexa.
2. En el siguiente paso las transformaremosa Funciones de Skolem.
3. Finalmente llegaremos a una representación en Forma de Clausulas.

Forma Prenexa
Una fórmula esta en Forma Normal Prenexa si es de la forma: Q1x1QnxnY donde Y es una fórmula desprovista de cuantificadores y escrita como conjunción de disyunciones, Q1,,Qn Î  y x1,, xn son variables.
Ejemplos: |
x ' y $ z ' v [(R(x) Ú T(y)) Ù Q(v, z)]' x $ y (R(x, y) Ù Q(b, z))' x P(x, y) |
 Tenemos nuestro conocimiento en forma de sentencias, formadas por símbolos de relación, variables, constantes, cuantificadores, todos mezclados. Para transformar una fórmula a Forma Normal Prenexa seguiremos el siguiente algoritmo:
* Eliminar todos los símbolos de equivalencia (« ), sustituyéndolos por una implicación a la derecha y una implicación a la izquierda: P« Q = (P® Q) Ù (Q® P)
* Eliminar todas las implicaciones (® ), sabiendo que (a ® b) es equivalente a (Ø a Ú b).
* Reducir el ambito de las negaciones (Ø ), a un único término, usando las siguientes propiedades:
* Ø (Ø p)=p
* Leyes de Morgan: Ø (a Ú b)= Ø a Ù Ø b y Ø (a Ù b)= Ø a Ú Ø b
* Ø ' x P(x) = $ x Ø P(x)
* Ø $ x P(x) =' x Ø P(x)
* Normalizar las variables de los cuantificadores, de forma que cada uno esté ligado con una única variable. Para ello podemos, incluso, renombrar las variables.
Ejemplos: |
' x P(x) Ú ' x Q(x) º ' y P(y) Ú ' x Q(x)' x [P(x) Ú Q(x)] Ù ' y R(y) Ú Q(x) º ' z[P(z) Ú Q(z)] Ù ' y R(y) Ú Q(x) |
 Mover todos los cuantificadores a la izquierda de la fórmula sin cambiar su orden relativo.
Ejemplos: |
' x P(x) Ú ' x Q(x)' y ' x [P(y) Ú Q(x)](' x R(x) Ú ' y T(y)) Ù $ z ' v Q(v Ú z)' x ' y $ z' v [(R(x) Ú T(y)) Ù Q(v Ú z)] |
 
Funciones de Skolem
El siguiente paso es convertir las fórmulas de Forma Normal Prenexa a Fórmulas de Skolem, que se caracterizan por no estar cuantificadas existencialmente. Por tanto, el algoritmo de transformación a forma de Skolemelimina los cuantificadores existenciales.
Partimos de una fórmula: Q1x1QnxnY. Se recorre la fórmula en forma prenexa de izquierda a derecha y se eliminan los cuantificadores existenciales según los dos casos siguientes:
* Sea Qr un cuantificador existencial:
* Si no hay ningún cuantificador universal antes de Qrxr, elegir una nueva constante c distinta de todas las que aparecen en Y, y reemplazar cada ocurrencia de xr en Y por c. Borrar Qrxr del prefijo de la fórmula.
* Si Qs1, Qs2  Qsk son los cuantificadores universales que aparecen antes de Qrxr, tomar un nuevo símbolo de función f distinto a todos los que aparecen en Y y reemplazar cada ocurrencia de xr porf(xs1,xs2,,xsk). Borrar Qrxr del prefijo de la fórmula.
Ejemplos: |
1. Supongamos que tenemos:' x ' y $ z [(R(x) Ú P(y)) Ù Q(b, z)]nos queda como' x ' y [(R(x) Ú P(y)) Ù Q(b, f(x, y))] 2. Supongamos la siguiente sentencia:$ x ' y $ w [R(a,w) Ú P(y) Ú P(f(x))]sustituimos x por c (caso 1): ' y $ w [R(a, w) Ú P(y) ÚP(f(c))]sustituimos w por g(y) (caso 2): ' y [R(a, g(y)) Ú P(y) ÚP(f(c))] |
 
* Representación en forma de clausulas: El último paso sera convertir las funciones de Skolem a clausulas. Tenemos las fórmulas cuantificadas universalmente, entonces podemos eliminar todos los prefijos, de tal manera que la fórmula resultante esta en forma de conjunción de disyunciones (forma normal conjuntiva): (a Ú b Ú c) Ù (d Ú e) Ù (j Ú l Ú m). Finalmente, por cada conjunción obtenemos una clausula: (a Ú b Ú c), (d Ú e) y (j Ú l Ú m).
Todos los pasos que hemos visto podemos resumirlos en el siguiente algoritmo, que es justamente el algoritmo general de conversión a forma clausal
1. Convertir la fórmula a Forma Normal Prenexa.
2. Transformarla a Forma de Skolem.
3. Pasar a Forma Normal Conjuntiva.
4. Separar cada conjunción en una clausula.
Ejemplo: |
Vamos a partir de la sentencia:' x [(R(x) Ú C(x, a)) Ù [O(x, b) Ú ($ y($ z O(y, z) ® L(x,y)))]]Paso 1: Eliminamos los símbolos de implicación:' x [(R(x) Ú C(x, a)) Ù [O(x, b) Ú ($ y(Ø $ z O(y, z) Ú L(x,y)))]]Paso 2: Reducimos el ambito de las negaciones:' x [(R(x) Ú C(x, a)) Ù [O(x, b) Ú ($ y(' z Ø O(y, z) Ú L(x,y)))]]Paso 3: En este caso no es necesario normalizar las variables de los cuantificadores por lo tanto pasamos al paso siguientePaso 4: Movemos los cuantificadores a laizquierda:' x $ y ' z [(R(x) Ú C(x, a)) Ù (O(x, b) Ú (Ø O(y, z) Ú L(x,y)))]Paso 5: Eliminamos los cuantificadores existenciales:' x ' z [(R(x) Ú C(x, a)) Ù (O(x, b) Ú (Ø O(s(x), z) Ú L(x, s(x))))]Paso 6: Eliminamos todos los cuantificadores: [(R(x) Ú C(x, a)) Ù (O(x, b) Ú (Ø O(s(x), z) Ú L(x, s(x))))]Paso 7: Separar una clausula por cada conjunción:(R(x) Ú C(x, a))(O(x, b) Ú (Ø O(s(x), z) Ú L(x, s(x)))) |

Algoritmo de Unificación.
Podemos definir la Unificación como un procedimiento de emparejamiento que compara dos literales y descubre si existe un conjunto de sustituciones que los haga idénticos. La idea basica de la unificación es muy sencilla. Para unificar dos literales vamos recorriéndolos 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 número de argumentos.
Para conseguir que cada argumento de un literal sea coincidente con su homólogo en el otro literal, debemos buscar una sustitución que nos permita emparejarlos. La única condición que debe reunir esta sustitución es que ha de aplicarse a todo el literal, es decir, que la sustitución afecta a todo el literal, y no sólo al argumento encuestión. Por decirlo de una manera sencilla, las sustituciones se van arrastrando a lo largo del proceso de unificación.
Ejemplo: |
Vamos a unificar P(x, x) con P(y, z): * Primera sustitución: (y/x)Resultado: P(y, y) P(y, z) * Segunda sustitución: (z/y)Resultado: P(z, z) P (z, z)La sustitución resultante es la composición de las sustituciones: s = |
 
Describamos a continuación los pasos basicos del algoritmo de unificación:
Tomamos como entrada dos clausulas, R y S.
1. Si R = S entonces R y S son unificables.
2. Si no, localizar el símbolo mas a la izquierda de R que se diferencia de su homólogo en S
1. Si es el primero (predicado), entonces R y S no son unificables.
2. Si es uno de los argumentos, entonces sean t1, t2 los términos en los que difieren.
1. Si ninguno de los dos (t1, t2) es una variable, entonces las clausulas no son unificables. Tampoco lo seran si siendo uno de ellos una variable, esta presente en las variables del otro.
2. Si t1 es una variable x y no esta entre las variables del otro t2, entonces haremos la sustitución: s =
3. Volver al paso 1.
A partir del algoritmo de unificación podemos extraer las siguientes conclusiones
a. Podemos señalar como unificables todas aquellas clausulas que no coincidan en su predicado y número de argumentos.
b. Antes de intentar la unificación debemos asegurarnos que no existenvariables comunes en ambas clausulas.
c. Debemos recordar siempre las condiciones que debe reunir una sustitución y que ésta debe ser única.
Ejemplo: |
Unificación de las sentencias R (x, f(g(x)), a) y R (b, y, z)Términos desiguales Sustitución 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 clausulas son unificables y la sustitución resultante es: s = |
 
Una vez que hemos comprendido como funciona el algoritmo de unificación y cómo debemos especificar adecuadamente las sentencias para llevar a cabo el algoritmo de resolución por refutación, vamos a describir los pasos del mismo detenidamente.

Algoritmo de Resolución
El procedimiento de resolución consiste en un proceso iterativo en el cual comparamos (resolvemos), dos clausulas llamadas clausulas padres y producimos una nueva clausula que se ha inferido (deducido), de ellas. Por tanto, lo que hacemos es combinar las clausulas padres para dar lugar a una nueva clausula, en la que podemos simplificar alguno de sus términos.
Por ejemplo, supongamos que tenemos las clausulas siguientes (ambas verdaderas):
* invierno Ú verano (es invierno o es verano).
* Ø invierno Ú frío (hace frío o no es invierno).
Aplicando resolución, podemos combinar ambas clausulas y obtener:
*invierno Ú verano Ú Ø invierno Ú frío.
Ahora podemos hacer una simplificación, ya que (invierno Ù Ø invierno) es una tautología, con lo que nos queda:
* verano Ú frío (es verano o hace frío).
Que también debera ser verdadera, pues hemos seguido puntualmente todas las propiedades de la lógica de primer orden.
La resolución opera tomando dos clausulas tales que cada una contenga un mismo literal, en una clausula en forma positiva y en la otra en forma negativa. El resolvente se obtiene combinando todos los literales de las clausulas padres y eliminando aquellos que se cancelan.
Si la clausula resultante es la clausula vacía (€), entonces es que hemos llegado a una contradicción.
Como observamos el proceso de resolución parece sencillo. Podemos resumirlo formalmente en los pasos siguientes, basados en el algoritmo de resolución lineal
Vamos a partir de un conjunto de clausulas. Nuestro objetivo es probar una sentencia mediante la demostración de que su negación nos lleva a una contradicción con las sentencias conocidas (es insatisfacible):
1. Convertimos todas las proposiciones a forma clausal.
2. Negamos la proposición que queremos demostrar y convertimos el resultado a forma clausal añadiendo la clausula resultante al conjunto obtenido en el paso anterior.
3. Hasta que se encuentre una contradicción o no se pueda seguir avanzando, repetimos lo siguiente
1. Seleccionamos dos clausulas (clausulaspadres) que contengan un literal común pero con signos contrarios y unificamos esos dos literales.
2. Las resolvemos juntas. La clausula resultante llamada resolvente, sera la disyunción de los literales de las dos clausulas padres, una vez realizadas las sustituciones apropiadas. El par de literales L y Ø L, que provienen de cada una de las clausulas padres, se pueden eliminar de la resolvente.
3. Si la resolvente es la clausula vacía, es que se ha encontrado una contradicción. Si no, añadimos la resolvente al conjunto de clausulas disponibles.
El algoritmo que acabamos de ver esta definido de una forma muy general. Sin embargo, para su uso cotidiano se pueden hacer una serie de sugerencias que, si bien en la mayoría de los casos no estan basadas en aserciones infalibles, pueden facilitar el proceso general de resolución:
* Aunque no sea un criterio estricto, suele dar buenos resultados comenzar a resolver por las clausulas de mayor tamaño, es decir, las que poseen mayor número de literales.
* La clausula resolvente se añade al conjunto de clausulas disponible y, en teoría, se puede continuar el proceso tomando dos clausulas padre cualesquiera. Sin embargo, al igual que en el caso anterior, suele dar buen resultado continuar el proceso de resolución a partir de la nueva clausula resultante.
* De igual forma, aunque no existe ninguna limitación en cuanto al número de veces que se puedeusar una clausula para resolver, se recomienda probar primero a no usar dos veces la misma clausula antes de usar todas las clausulas disponibles.
* Si es posible llegar a la clausula vacía resolviendo únicamente con las clausulas del conjunto inicial sin usar en ningún momento la o las clausulas provenientes de la hipótesis, es porque existe una inconsistencia dentro del conjunto inicial de clausulas. Ésta puede ser una forma de detectar errores en el diseño de la base de conocimiento.
* Si en la clausula resolvente existen dos literales iguales, ésta se puede simplificar eliminando uno de los dos literales. Puede ser necesaria una sustitución previa a fin de que esos literales sean unificables y, por tanto, completamente iguales.
* No es necesario usar todas las clausulas en el proceso de resolución. En la mayoría de los casos basta con usar algunas de las clausulas de la base de conocimiento y alguna o algunas de las clausulas proveniente de la hipótesis.
Ejemplo: |
A partir de la base de conocimiento siguiente, compuesta por 5 clausulas, aplicar resolución para demostrar que la hipótesis V(z) es cierta:P(x) Ú Q(c, x) Ú Ø S(y, x) y P(a) Ú Ø R(z) Ú S(b, a) y Ø Q(z, a) Ú V(a) y R(x) Ú V(y) yØ P(y) Ú Q(x, y)Ya tenemos las proposiciones en forma de clausulas, luego sólo nos falta agregar la hipótesis, transformarla en clausula y añadirla al conjunto de sentencias anterior:V(z) negada nos queda Ø V(z).(Como vemos esta en forma de clausula).Dado que las sustituciones afectan a todas las ocurrencias de la variable que se pretende sustituir en toda la base de conocimientos, si queremos que dicha sustitución afecte a muchas ocurrencias de una variable podemos intentar renombrarlas. Pero para evitar tener todas las variables renombradas y, por tanto, evitar la complicación del procedimiento, estableceremos un uso especial de las sustituciones. Sólo afectaran a las clausulas padres en el momento de la resolución, y a la clausula resolvente, quedando el resto inalteradas.Comenzamos el proceso por las clausulas de mayor tamaño:P(x) Ú Q(c, x) Ú Ø S(y, x) y P(a) Ú Ø R(z) Ú S(b, a) con la sustitución s = nos queda:P(x) Ú Q(c, x) Ú Ø S(y, x) Ú P(a) Ú Ø R(z) Ú S(b, a) = P(a) Ú Q(c, a) Ú Ø R(z).Combinamos la resolvente con Ø P(y) Ú Q(x, y) con la sustitución s = nos queda:P(a) Ú Q(c, a) Ú Ø R(z) Ú Ø P(y) Ú Q(x, y) = Q(c, a) Ú Ø R(z) Ú Q(x, a).Aplicamos a la resolvente la sustitución s = y nos queda:Q(c, a) Ú Ø R(z).Combinamos la resolvente con Ø Q(z, a) Ú V(a) con la sustitución s = nos queda:Q(c, a) Ú Ø R(z) Ú Ø Q(z, a) Ú V(a) = Ø R(c) Ú V(a).Combinamos la resolvente con R(x) Ú V(y) con la sustitución s = nos queda:Ø R(c) Ú V(a) Ú R(x) Ú V(y) = V(a) Ú V(y).Aplicamos la sustitución s = y nos queda V(a) que podemos combinar con Ø V(z) obteniendo la clausula vacía. |


Política de privacidad