domingo, 23 de agosto de 2015

Introducción a Prolog

Hoy les comparto una breve introducción al lenguaje de Programación Prolog.

La palabra PROLOG proviene del acrónimo (PROgrammation LOGique) o programación lógica.

Es un lenguaje de programación que fue introducido por la Universidad de Aix-Marseille (Marsella, Francia) por los profesores Alain Colmerauer y Philippe Roussel al inicio de los 70's.

Sabiendo lo anterior, pasemos a la sintaxis. Prolog se compone por los siguientes elemento:

-Constantes
-Variables
-Hechos
-Relaciones
-Reglas
-Consultas

Constantes
Pueden ser números enteros o flotantes, cadenas de caracteres en minúsculas o cadenas de caracteres entre comillas ("").

Ejemplos: 56, 873.123, hola, adiós, "Hola"

Variables
Cadena de caracteres que comienza con mayúscula o con "_". 

Ejemplos: X, Juan, _hola, _  

Hechos
Un hecho es una afirmación y se conforma por un predicado, seguido de unos paréntesis, entre los que se coloca un sujeto y posterior a los paréntesis se coloca un punto. 

    predicado(sujeto). 

Ejemplo: hombre(luis).

Y se lee, Pedro es hombre.

Relaciones
Las relaciones dentro de prolog se conforman de un predicado, seguido de unos paréntesis, entre los que se coloca un sujeto seguido de una coma "," y seguido de otro sujeto. Posterior a los paréntesis se coloca un punto.

    predicado(sujeto1,sujeto2).

Ejemplo: progenitor(luis,juan).

Reglas
Las reglas son suposiciones en base a lo que ya sabemos (hechos) y se componen de un hecho sin punto al final, seguido de dos puntos y un guión medio (":-") que significa "entonces" o "si", seguido de un uno o mas hechos o reglas separados por comas (",") o punto y coma (";"), donde la coma es el operador lógico "and" y el punto y coma es el operador lógico "or".

    predicado(sujeto1,...,sujetoN) :- predicado1(sujeto1,...,sujetoN) , predicado2(sujeto1,...,sujetoN) ; predicado3(sujeto1,...,sujetoN).

Ejemplo: padre(luis,juan) :- progenitor(luis,juan) ,  hombre(luis).

El ejemplo anterior se lee, Luis es padre de Juan si, Luis es progenitor de Juan y Luis es hombre.

Consultas
Una consulta en prolog se compone de el predicado de una regla, seguido de paréntesis, que contienen los sujetos o variables requeridas por dicha regla, y los un punto posterior a los paréntesis.

    regla(sujeto1,sujeto2,variable1).

Ejemplo: padre(luis,juan).  padre(X,Y). padre(luis,X). padre(X,juan).

Y se lee, ¿Es Luis, padre de Juan?

Hay dos maneras de realizar una consulta:

1- Mandando como parámetro valores específicos como en el ejemplo 1, donde se obtendrá como resultado "True" o "False", True si es verdad según los hechos y reglas establecidas y False en caso contrario.

    padre(luis,pedro).
    False 
 
2- Mandando una o mas variables como en los ejemplos posteriores, donde se obtendrá como resultado todos los posibles valores que pueden llegar a tomar dichas variables:

    padre(luis,X).
    X=juan

Dato extra
 
Los comentarios van antecedidos del símbolo "%".

    % Esto es un comentario.

Cuando se utiliza el operador lógico AND (","), se debe cumplir la condición tanto de la izquierda como de la derecha del signo para que sea verdadero el resultado.

Cuando se utiliza el operador lógico OR (";"), el resultado solo es falso cuando la condición tanto de la izquierda como la de la derecha son falsas.

Si queremos comparar dos elementos utilizaremos "==", si ambos elementos son iguales, retorna verdadero, si no es así, retorna falso.

El operador "not" nos sirve para negar una comparación, un hecho, una regla, etc. Y va antes de cualquiera de estos elementos.

    not(X==Y)

Donde se indica que esa condición sera verdadera si X es diferente de Y.

Esto es todo por este tutorial, espero que les sea de mucha utilidad, cualquier cosa no duden en comentarla y de antemano muchas gracias.

Fuente:
http://www.itnuevolaredo.edu.mx/takeyas/apuntes/Inteligencia%20Artificial/Apuntes/IA/Prolog.pdf Consulta el 23 de Agosto del 2015.

http://ce.azc.uam.mx/profesores/mjm/pub/prolog.pdf Consulta el 23 de Agosto del 2015.

No hay comentarios:

Publicar un comentario