1-) INSTALAR PROLOG ✔
2-) APRENDER A USAR ✔
3-) ¿QUE ES PROLOG?
Prolog es un lenguaje de programación lógica cuya primera versión fue desarrollada a principios de la década de 1970 por Colmerauer en la universidad de Marsella. Contrariamente a otros lenguajes de programación basados es estructuras de control y definición de funciones para calcular resultados, Prolog está orientado a la especificación de relaciones para responder consultas. En ese sentido Prolog es similar a un sistema de base de datos, aunque en el contexto de la inteligencia artificial se prefiere hablar de bases de conocimiento, enfatizando la complejidad estructural de los datos y de las deducciones que se pueden obtener de ellos.Por ejemplo, para especificar la relación el padre de X es Y, se crea una base de conocimiento con hechos expresados mediante un predicado padre(X,Y) de la siguiente manera:
padre(juan,pedro).
padre(josé,pedro).
padre(maría,pedro).
padre(pedro,pablo).
padre(ana,alberto).
...
Esto es muy parecido a crear una tabla en una base de datos, sólo que cada caso se especifica mediante una cláusula independiente terminada por '.' . Si además se quiere incorporar conocimiento sobre la madre, se puede proceder de la misma manera agregando por ejemplo:padre(josé,pedro).
padre(maría,pedro).
padre(pedro,pablo).
padre(ana,alberto).
...
madre(juan,ana).
madre(josé,ana).
madre(maría,ana).
madre(pedro,juanita).
madre(ana,julia).
...
madre(josé,ana).
madre(maría,ana).
madre(pedro,juanita).
madre(ana,julia).
...
En prolog todas las cláusulas terminan con el delimitador '.' . Las cláusulas de consulta se interpretan como ecuaciones lógicas y pueden incluir variables. Por ejemplo:
?- padre(maría,pablo).
No
?- padre(ana,alberto).
Yes
?- padre(maría,X).
X = pedro ;
No
?- padre(X,Y).
X = juan
Y = pedro ;
X = josé
Y = pedro ;
X = maría
Y = pedro ;
X = pedro
Y = pablo ;
X = ana
Y = alberto ;
No
No
?- padre(ana,alberto).
Yes
?- padre(maría,X).
X = pedro ;
No
?- padre(X,Y).
X = juan
Y = pedro ;
X = josé
Y = pedro ;
X = maría
Y = pedro ;
X = pedro
Y = pablo ;
X = ana
Y = alberto ;
No
EJEMPLO:
% La sintaxis es factorial(N, F) -> Factorial de N es F (el resultado se guarda en F)factorial(0, 1).factorial(1, 1).factorial(N, F) :- N>0, N1 is N - 1, factorial(N1, F1), F is N * F1.
%el factorial se llama recursivamente dejando el resultado en F
4-) ¿CUAL ES LA RELACIÓN ENTRE PROLOG Y LÓGICA PREDICADOS?
Algoritmo de búsqueda
********************
Un query consise en una conjunción de predicados que Prolog debe
demostrar que es verdadero, mostrando además las restricciones bajo
las cuales se cumple.
Ejemplo 1:
1.- member(2,[1,2,3]).
Se considera (A): no unifica
Se considera (B): unifica con X=2, L=[2,3]
Se insertan las condiciones de (B) en la lista de metas reemplazando
la variables pro las restricciones.
2.- member(2,[2,3]).
Se considera (A): unifica con X=2, L=[3].
Como no hay condiciones => exito.
El interprete arroja yes.