lunes, 15 de octubre de 2012

Aplicación de la lógica predicativa

Tiene muchos tipos de aplicaciones y un uno de ellos es en la  las bases de datos.

Un uso importante de la lógica de predicados o predicativa se encuentra en las bases de datos 
y mas generalmente una noción de "base de conocimientos", que se define como una base de datos más diversas reglas de cálculo

En esta aplicacion es muy común el uso de predicados que contienen variables como consultas. Los propios predicados representan los datos básicos almacenados , predicados computables o combinaciones de los mismo. 
Una consulta le pide al sistema encontrar todos los individuos correspondientes a las variables en la expresión de tal manera que si la expresión se satisface evaluara un 1. Esta idea puede demostrarse consultando en una base de datos utilizando el lenguaje Prolog que si bien no es el lenguaje de consulta mas utilizado sino el SQL , sino que es uno de los mas naturales para utilizarse.  

Un ejemplo de base de datos en Prolog

Existen muchas maneras de representar los predicados en una bae de datos, como por archivos estructurados representando tablas u hojas de cálculos etc. Aquí en este lenguaje una de las formas ara representar un predicado es solo una enumeración de todas las combinaciones de valores para los que el predicado es verdadero.

Se define el predicado madre y el padre de para poder modelar la familia de el arbol.


 

Es posible que una consulta no contenga variables, en cuyo caso se esperaría una respuesta de 1 o 0.
Por ejemplo
madre (Susan, Hank) ⇒ verdadero
madre (Susan, tom) ⇒ falso


Más interesante aún, cuando ponemos las variables en las consultas, esperamos obtener los valores para
aquellas variables que satisfacen el predicado:
mother(alice, X) ⇒ X = tom;  X = carol (two alternatives for X)
father(tom, X) ⇒ false (no such X exists)
mother(X, Y) ⇒ (several alternative combinations for X, Y)
X = alice, Y = tom;
X = alice, Y = carol;
X = carol, Y = george;
X = carol, Y = heather;
X = susan, Y = hank


Tenga en cuenta que los valores X y Y deben estar en correspondencia. No estaría bien que simplemente
se proporcionara el conjunto de X y el conjunto de Y por separado.

El lenguaje Prolog nos permite presentar consultas y recibir una respuesta automática en un estilo similar a la anterior. Por otra parte, Prolog nos permite definir nuevos predicados que utilizan lógica en lugar de la enumeración.


Tal predicado se define por la expresión lógica siguiente:
abuela (X, Y): - madre  (X, Z), padre (Z, Y).


Esto : - se lee como "si" y la coma que separa la madre y el padre se lee como "y". Esto es, en efecto, "X es la abuela de Y si X es la madre de (algunos) Z y Z es el
padre de Y "Aún tenemos que definir padre, pero vamos a hacer esto ahora.:

A continuación: - se lee como "si" y la coma que separa la madre y el padre se lee como "y". esta
Dice, en efecto, "X es la abuela de Y si X es la madre de (algunos) Z y Z es el padre de Y "Aún tenemos que definir padre, pero vamos a hacer esto ahora.:

padre (X, Y): - La madre de (X, Y).
padre (X, Y): - padre (X, Y).

Aquí tenemos dos afirmaciones distintas lógicas, que dice que "X es el padre de Y si X es la madre de Y ", y el otro diciendo algo similar para el padre. Estas afirmaciones no son contradictorio, por el término de enlace: - es "si" no ", si y sólo si". Sin embargo, la recogida de todas las afirmaciones con un símbolo de predicado dado en la lhs agota las posibilidades para ese predicado.

Así, las dos reglas anteriores juntos podría ser tomado como equivalente a:
padre (X, Y) si y sólo si (la madre (X, Y) o padre (X, Y))

Dadas estas definiciones, además de la base de datos, ahora tenemos una "base de conocimiento"
ya que contamos con las normas, así como enumeraciones. Podemos consultar los predicados se definen en la misma manera que consultan los enumerados.


grandmother(alice, Y) ⇒ Y = george; Y = heather
grandmother(X, Y) ⇒ X = alice, Y = george;
X = alice, Y = heather
X = carol, Y = hank
grandmother(susan, Y) ⇒ false


referencias:

http://www.cse.iitd.ernet.in/~kkb/CSL864-1.pdf http://www.cse.iitd.ernet.in/~kkb/CSL864-1.pdf
http://www.cs.hmc.edu/~keller/cs60book/10%20Predicate%20Logic.pdf

1 comentario:

  1. Quedó algo repetitivo con los temas de los demás. Coordínense mejor, por favor. 10 pts de todos modos en esta ocasión.

    ResponderEliminar